diff --git a/cmake/cmake.options b/cmake/cmake.options index e12de3e4e6..fc17ddecf6 100644 --- a/cmake/cmake.options +++ b/cmake/cmake.options @@ -47,27 +47,20 @@ IF(${TD_WINDOWS}) MESSAGE("build wingetopt Win32") option( - BUILD_WINGETOPT + BUILD_WINGETOPT "If build wingetopt on Windows" ON ) - + option( TDENGINE_3 "TDengine 3.x for taos-tools" ON ) - + option( BUILD_CRASHDUMP - "If build crashdump on Windows" - ON - ) - - MESSAGE("build geos Win32") - option( - BUILD_GEOS - "If build geos on Windows" + "If build crashdump on Windows" ON ) @@ -79,7 +72,7 @@ ENDIF () option( BUILD_GEOS - "If build geos on Windows" + "If build with geos" ON ) @@ -95,6 +88,12 @@ option( ON ) +option( + BUILD_PCRE2 + "If build with pcre2" + ON +) + option( JEMALLOC_ENABLED "If build with jemalloc" @@ -114,14 +113,14 @@ option( ) option( - BUILD_WITH_LEVELDB - "If build with leveldb" + BUILD_WITH_LEVELDB + "If build with leveldb" OFF ) option( - BUILD_WITH_ROCKSDB - "If build with rocksdb" + BUILD_WITH_ROCKSDB + "If build with rocksdb" ON ) @@ -170,46 +169,46 @@ ENDIF () option( BUILD_WITH_SQLITE - "If build with sqlite" + "If build with sqlite" OFF ) option( BUILD_WITH_BDB - "If build with BDB" + "If build with BDB" OFF ) option( - BUILD_WITH_LUCENE - "If build with lucene" - off + BUILD_WITH_LUCENE + "If build with lucene" + off ) option( BUILD_WITH_NURAFT - "If build with NuRaft" + "If build with NuRaft" OFF ) option( BUILD_WITH_UV - "If build with libuv" - ON + "If build with libuv" + ON ) option( BUILD_WITH_UV_TRANS - "If build with libuv_trans " - ON + "If build with libuv_trans " + ON ) IF(${TD_LINUX} MATCHES TRUE) option( - BUILD_DEPENDENCY_TESTS - "If build dependency tests" + BUILD_DEPENDENCY_TESTS + "If build dependency tests" ON ) @@ -217,14 +216,14 @@ ENDIF () option( BUILD_DOCS - "If use doxygen build documents" + "If use doxygen build documents" OFF ) option( BUILD_WITH_INVERTEDINDEX - "If use invertedIndex" - ON + "If use invertedIndex" + ON ) option( diff --git a/cmake/pcre2_CMakeLists.txt.in b/cmake/pcre2_CMakeLists.txt.in new file mode 100644 index 0000000000..c3115d8201 --- /dev/null +++ b/cmake/pcre2_CMakeLists.txt.in @@ -0,0 +1,13 @@ + +# pcre2 +ExternalProject_Add(pcre2 + GIT_REPOSITORY https://github.com/PCRE2Project/pcre2.git + GIT_TAG pcre2-10.43 + SOURCE_DIR "${TD_CONTRIB_DIR}/pcre2" + #BINARY_DIR "${TD_CONTRIB_DIR}/pcre2" + #BUILD_IN_SOURCE TRUE + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) diff --git a/include/common/tdataformat.h b/include/common/tdataformat.h index 49ffd8ec35..ce9b95522a 100644 --- a/include/common/tdataformat.h +++ b/include/common/tdataformat.h @@ -95,6 +95,15 @@ const static uint8_t BIT2_MAP[4] = {0b11111100, 0b11110011, 0b11001111, 0b001111 #define COL_VAL_IS_NULL(CV) ((CV)->flag == CV_FLAG_NULL) #define COL_VAL_IS_VALUE(CV) ((CV)->flag == CV_FLAG_VALUE) +#define tRowGetKey(_pRow, _pKey) \ + do { \ + (_pKey)->ts = (_pRow)->ts; \ + (_pKey)->numOfPKs = 0; \ + if ((_pRow)->numOfPKs > 0) { \ + tRowGetPrimaryKey((_pRow), (_pKey)); \ + } \ + } while (0) + // SValueColumn ================================ typedef struct { int8_t cmprAlg; // filled by caller @@ -125,8 +134,8 @@ void tRowDestroy(SRow *pRow); int32_t tRowSort(SArray *aRowP); int32_t tRowMerge(SArray *aRowP, STSchema *pTSchema, int8_t flag); int32_t tRowUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *aColData, int32_t nColData, int32_t flag); -void tRowGetKey(SRow *pRow, SRowKey *key); -int32_t tRowKeyCompare(const void *p1, const void *p2); +void tRowGetPrimaryKey(SRow *pRow, SRowKey *key); +int32_t tRowKeyCompare(const SRowKey *key1, const SRowKey *key2); int32_t tRowKeyAssign(SRowKey *pDst, SRowKey *pSrc); // SRowIter ================================ diff --git a/include/common/tglobal.h b/include/common/tglobal.h index 7c2d63e025..17ed732af8 100644 --- a/include/common/tglobal.h +++ b/include/common/tglobal.h @@ -258,7 +258,7 @@ extern bool tsExperimental; int32_t taosCreateLog(const char *logname, int32_t logFileNum, const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, bool tsc); int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, - bool tsc); + bool tsc, bool isDumpCfg); void taosCleanupCfg(); int32_t taosCfgDynamicOptions(SConfig *pCfg, const char *name, bool forServer); diff --git a/include/common/tgrant.h b/include/common/tgrant.h index 5a2ed58045..7e7162204e 100644 --- a/include/common/tgrant.h +++ b/include/common/tgrant.h @@ -56,6 +56,10 @@ typedef enum { TSDB_GRANT_VIEW, TSDB_GRANT_MULTI_TIER, TSDB_GRANT_BACKUP_RESTORE, + TSDB_GRANT_OBJECT_STORAGE, + TSDB_GRANT_ACTIVE_ACTIVE, + TSDB_GRANT_DUAL_REPLICA_HA, + TSDB_GRANT_DB_ENCRYPTION, } EGrantType; int32_t checkAndGetCryptKey(const char *encryptCode, const char *machineId, char **key); diff --git a/include/common/tmsg.h b/include/common/tmsg.h index 96001afc91..e583920357 100644 --- a/include/common/tmsg.h +++ b/include/common/tmsg.h @@ -329,6 +329,7 @@ typedef enum ENodeType { QUERY_NODE_SHOW_DB_ALIVE_STMT, QUERY_NODE_SHOW_CLUSTER_ALIVE_STMT, QUERY_NODE_BALANCE_VGROUP_LEADER_STMT, + QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT, QUERY_NODE_RESTORE_DNODE_STMT, QUERY_NODE_RESTORE_QNODE_STMT, QUERY_NODE_RESTORE_MNODE_STMT, @@ -2427,10 +2428,11 @@ int32_t tDeserializeSRedistributeVgroupReq(void* buf, int32_t bufLen, SRedistrib void tFreeSRedistributeVgroupReq(SRedistributeVgroupReq* pReq); typedef struct { - int32_t useless; + int32_t reserved; int32_t vgId; int32_t sqlLen; char* sql; + char db[TSDB_DB_FNAME_LEN]; } SBalanceVgroupLeaderReq; int32_t tSerializeSBalanceVgroupLeaderReq(void* buf, int32_t bufLen, SBalanceVgroupLeaderReq* pReq); diff --git a/include/libs/nodes/cmdnodes.h b/include/libs/nodes/cmdnodes.h index 2b60e20902..c2e5be96ad 100644 --- a/include/libs/nodes/cmdnodes.h +++ b/include/libs/nodes/cmdnodes.h @@ -582,6 +582,7 @@ typedef struct SBalanceVgroupStmt { typedef struct SBalanceVgroupLeaderStmt { ENodeType type; int32_t vgId; + char dbName[TSDB_DB_NAME_LEN]; } SBalanceVgroupLeaderStmt; typedef struct SMergeVgroupStmt { diff --git a/include/os/osSemaphore.h b/include/os/osSemaphore.h index e26a9d16d1..5b46706790 100644 --- a/include/os/osSemaphore.h +++ b/include/os/osSemaphore.h @@ -33,6 +33,13 @@ int tsem_timewait(tsem_t *sim, int64_t milis); int tsem_post(tsem_t *sem); int tsem_destroy(tsem_t *sem); +#define tsem2_t tsem_t +#define tsem2_init tsem_init +#define tsem2_wait tsem_wait +#define tsem2_timewait tsem_timewait +#define tsem2_post tsem_post +#define tsem2_destroy tsem_destroy + #elif defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32) #include @@ -44,6 +51,13 @@ int tsem_timewait(tsem_t *sim, int64_t milis); int tsem_post(tsem_t *sem); int tsem_destroy(tsem_t *sem); +#define tsem2_t tsem_t +#define tsem2_init tsem_init +#define tsem2_wait tsem_wait +#define tsem2_timewait tsem_timewait +#define tsem2_post tsem_post +#define tsem2_destroy tsem_destroy + #else #define tsem_t sem_t @@ -53,6 +67,20 @@ int tsem_timewait(tsem_t *sim, int64_t milis); #define tsem_post sem_post #define tsem_destroy sem_destroy +typedef struct tsem2_t { + TdThreadMutex mutex; + TdThreadCond cond; + TdThreadCondAttr attr; + int count; +} tsem2_t; + +// #define tsem2_t sem_t +int tsem2_init(tsem2_t* sem, int pshared, unsigned int value); +int tsem2_wait(tsem2_t* sem); +int tsem2_timewait(tsem2_t* sem, int64_t milis); +int tsem2_post(tsem2_t* sem); +int tsem2_destroy(tsem2_t* sem); + #endif #if defined(_TD_DARWIN_64) diff --git a/include/os/osThread.h b/include/os/osThread.h index 4ef4550419..38c1b366f0 100644 --- a/include/os/osThread.h +++ b/include/os/osThread.h @@ -222,6 +222,7 @@ int32_t taosThreadCondTimedWait(TdThreadCond *cond, TdThreadMutex *mutex, const int32_t taosThreadCondAttrDestroy(TdThreadCondAttr *attr); int32_t taosThreadCondAttrGetPshared(const TdThreadCondAttr *attr, int32_t *pshared); int32_t taosThreadCondAttrInit(TdThreadCondAttr *attr); +int32_t taosThreadCondAttrSetclock(TdThreadCondAttr *attr, int clockId); int32_t taosThreadCondAttrSetPshared(TdThreadCondAttr *attr, int32_t pshared); int32_t taosThreadDetach(TdThread thread); int32_t taosThreadEqual(TdThread t1, TdThread t2); diff --git a/include/util/taoserror.h b/include/util/taoserror.h index 03a024bb8c..dafdac9649 100644 --- a/include/util/taoserror.h +++ b/include/util/taoserror.h @@ -327,6 +327,7 @@ int32_t* taosGetErrno(); #define TSDB_CODE_MND_DB_IN_CREATING TAOS_DEF_ERROR_CODE(0, 0x0396) // #define TSDB_CODE_MND_INVALID_SYS_TABLENAME TAOS_DEF_ERROR_CODE(0, 0x039A) #define TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE TAOS_DEF_ERROR_CODE(0, 0x039B) +#define TSDB_CODE_MND_DB_ENCRYPT_GRANT_EXPIRED TAOS_DEF_ERROR_CODE(0, 0x039C) // mnode-node #define TSDB_CODE_MND_MNODE_ALREADY_EXIST TAOS_DEF_ERROR_CODE(0, 0x03A0) diff --git a/include/util/tgeosctx.h b/include/util/tgeosctx.h index b5ac5a9333..267ba9e049 100644 --- a/include/util/tgeosctx.h +++ b/include/util/tgeosctx.h @@ -21,6 +21,7 @@ extern "C" { #endif #include +#include typedef struct SGeosContext { GEOSContextHandle_t handle; @@ -31,6 +32,9 @@ typedef struct SGeosContext { GEOSWKBReader *WKBReader; GEOSWKBWriter *WKBWriter; + pcre2_code *WKTRegex; + pcre2_match_data *WKTMatchData; + char errMsg[512]; } SGeosContext; diff --git a/include/util/tpcre2.h b/include/util/tpcre2.h new file mode 100644 index 0000000000..4fd461cfc8 --- /dev/null +++ b/include/util/tpcre2.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * 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. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#ifndef _TD_ULIT_PCRE2_H_ +#define _TD_ULIT_PCRE2_H_ + +#define PCRE2_CODE_UNIT_WIDTH 8 +#include "pcre2.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int32_t doRegComp(pcre2_code** ppRegex, pcre2_match_data** ppMatchData, const char* pattern); +int32_t doRegExec(const char* pString, pcre2_code* pRegex, pcre2_match_data* pMatchData); +void destroyRegexes(pcre2_code* pWktRegex, pcre2_match_data* pWktMatchData); + +#ifdef __cplusplus +} +#endif + +#endif // _TD_UTIL_PAGEDBUF_H_ diff --git a/source/client/src/clientEnv.c b/source/client/src/clientEnv.c index 1ee771b619..77294e7a34 100644 --- a/source/client/src/clientEnv.c +++ b/source/client/src/clientEnv.c @@ -726,7 +726,7 @@ void taos_init_imp(void) { return; } - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1, true) != 0) { tscInitRes = -1; return; } diff --git a/source/client/src/clientTmq.c b/source/client/src/clientTmq.c index 2a94c7a9c0..907a6ebe3c 100644 --- a/source/client/src/clientTmq.c +++ b/source/client/src/clientTmq.c @@ -105,7 +105,7 @@ struct tmq_t { STaosQueue* mqueue; // queue of rsp STaosQall* qall; STaosQueue* delayedTask; // delayed task queue for heartbeat and auto commit - tsem_t rspSem; + tsem2_t rspSem; }; typedef struct SAskEpInfo { @@ -727,7 +727,7 @@ static void generateTimedTask(int64_t refId, int32_t type) { *pTaskType = type; taosWriteQitem(tmq->delayedTask, pTaskType); - tsem_post(&tmq->rspSem); + tsem2_post(&tmq->rspSem); taosReleaseRef(tmqMgmt.rsetId, refId); } @@ -742,7 +742,7 @@ void tmqReplayTask(void* param, void* tmrId) { tmq_t* tmq = taosAcquireRef(tmqMgmt.rsetId, refId); if (tmq == NULL) goto END; - tsem_post(&tmq->rspSem); + tsem2_post(&tmq->rspSem); taosReleaseRef(tmqMgmt.rsetId, refId); END: taosMemoryFree(param); @@ -1033,7 +1033,7 @@ void tmqFreeImpl(void* handle) { } taosFreeQall(tmq->qall); - tsem_destroy(&tmq->rspSem); + tsem2_destroy(&tmq->rspSem); taosArrayDestroyEx(tmq->clientTopics, freeClientVgImpl); taos_close_internal(tmq->pTscObj); @@ -1121,7 +1121,7 @@ tmq_t* tmq_consumer_new(tmq_conf_t* conf, char* errstr, int32_t errstrLen) { pTmq->consumerId = tGenIdPI64(); // init semaphore - if (tsem_init(&pTmq->rspSem, 0, 0) != 0) { + if (tsem2_init(&pTmq->rspSem, 0, 0) != 0) { tscError("consumer:0x %" PRIx64 " setup failed since %s, consumer group %s", pTmq->consumerId, terrstr(), pTmq->groupId); SET_ERROR_MSG_TMQ("init t_sem failed") @@ -1132,7 +1132,7 @@ tmq_t* tmq_consumer_new(tmq_conf_t* conf, char* errstr, int32_t errstrLen) { pTmq->pTscObj = taos_connect_internal(conf->ip, user, pass, NULL, NULL, conf->port, CONN_TYPE__TMQ); if (pTmq->pTscObj == NULL) { tscError("consumer:0x%" PRIx64 " setup failed since %s, groupId:%s", pTmq->consumerId, terrstr(), pTmq->groupId); - tsem_destroy(&pTmq->rspSem); + tsem2_destroy(&pTmq->rspSem); SET_ERROR_MSG_TMQ("init tscObj failed") goto _failed; } @@ -1434,7 +1434,7 @@ END: taosReleaseRef(tmqMgmt.rsetId, refId); FAIL: - if (tmq) tsem_post(&tmq->rspSem); + if (tmq) tsem2_post(&tmq->rspSem); taosMemoryFree(pParam); if (pMsg) taosMemoryFreeClear(pMsg->pData); if (pMsg) taosMemoryFreeClear(pMsg->pEpSet); @@ -2132,10 +2132,10 @@ TAOS_RES* tmq_consumer_poll(tmq_t* tmq, int64_t timeout) { tmq->consumerId, tmq->epoch, startTime, currentTime); return NULL; } - tsem_timewait(&tmq->rspSem, (timeout - elapsedTime)); + tsem2_timewait(&tmq->rspSem, (timeout - elapsedTime)); } else { // use tsem_timewait instead of tsem_wait to avoid unexpected stuck - tsem_timewait(&tmq->rspSem, 1000); + tsem2_timewait(&tmq->rspSem, 1000); } } } diff --git a/source/common/src/cos.c b/source/common/src/cos.c index 26c936c48d..6c46f4ff42 100644 --- a/source/common/src/cos.c +++ b/source/common/src/cos.c @@ -63,6 +63,11 @@ static int32_t s3ListBucket(char const *bucketname); int32_t s3CheckCfg() { int32_t code = 0; + if (!tsS3Enabled) { + fprintf(stderr, "s3 not configured.\n"); + goto _exit; + } + code = s3Begin(); if (code != 0) { fprintf(stderr, "failed to initialize s3.\n"); diff --git a/source/common/src/tcol.c b/source/common/src/tcol.c index 90420b7441..fc9dd1fb4c 100644 --- a/source/common/src/tcol.c +++ b/source/common/src/tcol.c @@ -250,7 +250,7 @@ bool checkColumnEncodeOrSetDefault(uint8_t type, char encode[TSDB_CL_COMPRESS_OP strncpy(encode, getDefaultEncodeStr(type), TSDB_CL_COMPRESS_OPTION_LEN); return true; } - return checkColumnEncode(encode); + return checkColumnEncode(encode) && validColEncode(type, columnEncodeVal(encode)); } bool checkColumnCompress(char compress[TSDB_CL_COMPRESS_OPTION_LEN]) { if (0 == strlen(compress)) return true; @@ -267,7 +267,8 @@ bool checkColumnCompressOrSetDefault(uint8_t type, char compress[TSDB_CL_COMPRES strncpy(compress, getDefaultCompressStr(type), TSDB_CL_COMPRESS_OPTION_LEN); return true; } - return checkColumnCompress(compress); + + return checkColumnCompress(compress) && validColCompress(type, columnCompressVal(compress)); } bool checkColumnLevel(char level[TSDB_CL_COMPRESS_OPTION_LEN]) { if (0 == strlen(level)) return true; @@ -288,7 +289,7 @@ bool checkColumnLevelOrSetDefault(uint8_t type, char level[TSDB_CL_COMPRESS_OPTI strncpy(level, getDefaultLevelStr(type), TSDB_CL_COMPRESS_OPTION_LEN); return true; } - return checkColumnLevel(level); + return checkColumnLevel(level) && validColCompressLevel(type, columnLevelVal(level)); } void setColEncode(uint32_t* compress, uint8_t l1) { diff --git a/source/common/src/tdatablock.c b/source/common/src/tdatablock.c index 1c63174bf6..1c0b696aaa 100644 --- a/source/common/src/tdatablock.c +++ b/source/common/src/tdatablock.c @@ -2411,13 +2411,24 @@ _end: void buildCtbNameAddGroupId(const char* stbName, char* ctbName, uint64_t groupId) { char tmp[TSDB_TABLE_NAME_LEN] = {0}; - if (stbName == NULL) { - snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%" PRIu64, groupId); - } else { - snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%s_%" PRIu64, stbName, groupId); + if (stbName == NULL){ + snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%"PRIu64, groupId); + }else{ + int32_t i = strlen(stbName) - 1; + for(; i >= 0; i--){ + if (stbName[i] == '.'){ + break; + } + } + snprintf(tmp, TSDB_TABLE_NAME_LEN, "_%s_%"PRIu64, stbName + i + 1, groupId); } ctbName[TSDB_TABLE_NAME_LEN - strlen(tmp) - 1] = 0; // put stbname + groupId to the end strcat(ctbName, tmp); + for(int i = 0; i < strlen(ctbName); i++){ + if(ctbName[i] == '.'){ + ctbName[i] = '_'; + } + } } // auto stream subtable name starts with 't_', followed by the first segment of MD5 digest for group vals. diff --git a/source/common/src/tdataformat.c b/source/common/src/tdataformat.c index 04ad00e1dc..ae3fe6a2a0 100644 --- a/source/common/src/tdataformat.c +++ b/source/common/src/tdataformat.c @@ -1183,8 +1183,7 @@ int32_t tRowUpsertColData(SRow *pRow, STSchema *pTSchema, SColData *aColData, in } } -void tRowGetKey(SRow *row, SRowKey *key) { - key->ts = row->ts; +void tRowGetPrimaryKey(SRow *row, SRowKey *key) { key->numOfPKs = row->numOfPKs; if (key->numOfPKs == 0) { @@ -1283,10 +1282,7 @@ int32_t tValueCompare(const SValue *tv1, const SValue *tv2) { // NOTE: // set key->numOfPKs to 0 as the smallest key with ts // set key->numOfPKs to (TD_MAX_PK_COLS + 1) as the largest key with ts -int32_t tRowKeyCompare(const void *p1, const void *p2) { - SRowKey *key1 = (SRowKey *)p1; - SRowKey *key2 = (SRowKey *)p2; - +FORCE_INLINE int32_t tRowKeyCompare(const SRowKey *key1, const SRowKey *key2) { if (key1->ts < key2->ts) { return -1; } else if (key1->ts > key2->ts) { diff --git a/source/common/src/tglobal.c b/source/common/src/tglobal.c index 8b7901e2a7..650a639964 100644 --- a/source/common/src/tglobal.c +++ b/source/common/src/tglobal.c @@ -240,8 +240,8 @@ int64_t tsTickPerMin[] = {60000L, 60000000L, 60000000000L}; int64_t tsTickPerHour[] = {3600000L, 3600000000L, 3600000000000L}; // lossy compress 7 -char tsLossyColumns[32] = ""; // "float|double" means all float and double columns can be lossy compressed. set empty - // can close lossy compress. +char tsLossyColumns[32] = "float|double"; // "float|double" means all float and double columns can be lossy compressed. + // set empty can close lossy compress. // below option can take effect when tsLossyColumns not empty float tsFPrecision = 1E-8; // float column precision double tsDPrecision = 1E-16; // double column precision @@ -296,6 +296,7 @@ char tsS3AccessKeySecret[TSDB_FQDN_LEN] = ""; char tsS3BucketName[TSDB_FQDN_LEN] = ""; char tsS3AppId[TSDB_FQDN_LEN] = ""; int8_t tsS3Enabled = false; +int8_t tsS3EnabledCfg = false; int8_t tsS3Oss = false; int8_t tsS3StreamEnabled = false; @@ -375,6 +376,7 @@ int32_t taosSetS3Cfg(SConfig *pCfg) { #if defined(USE_COS) || defined(USE_S3) #ifdef TD_ENTERPRISE /*if (tsDiskCfgNum > 1) */ tsS3Enabled = true; + tsS3EnabledCfg = true; #endif tsS3StreamEnabled = true; #endif @@ -813,7 +815,6 @@ static int32_t taosAddServerCfg(SConfig *pCfg) { CFG_DYN_ENT_SERVER) != 0) return -1; - if (cfgAddString(pCfg, "lossyColumns", tsLossyColumns, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddFloat(pCfg, "fPrecision", tsFPrecision, 0.0f, 100000.0f, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddFloat(pCfg, "dPrecision", tsDPrecision, 0.0f, 1000000.0f, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; if (cfgAddInt32(pCfg, "maxRange", tsMaxRange, 0, 65536, CFG_SCOPE_SERVER, CFG_DYN_NONE) != 0) return -1; @@ -1274,7 +1275,6 @@ static int32_t taosSetServerCfg(SConfig *pCfg) { tsCacheLazyLoadThreshold = cfgGetItem(pCfg, "cacheLazyLoadThreshold")->i32; - tstrncpy(tsLossyColumns, cfgGetItem(pCfg, "lossyColumns")->str, sizeof(tsLossyColumns)); tsFPrecision = cfgGetItem(pCfg, "fPrecision")->fval; tsDPrecision = cfgGetItem(pCfg, "dPrecision")->fval; tsMaxRange = cfgGetItem(pCfg, "maxRange")->i32; @@ -1394,7 +1394,7 @@ static int32_t taosCheckGlobalCfg() { } int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile, char *apolloUrl, SArray *pArgs, - bool tsc) { + bool tsc, bool isDumpCfg) { if (tsCfg != NULL) return 0; tsCfg = cfgInit(); @@ -1441,7 +1441,7 @@ int32_t taosInitCfg(const char *cfgDir, const char **envCmd, const char *envFile taosSetAllDebugFlag(tsCfg, cfgGetItem(tsCfg, "debugFlag")->i32); - cfgDumpCfg(tsCfg, tsc, false); + if(isDumpCfg) cfgDumpCfg(tsCfg, tsc, false); if (taosCheckGlobalCfg() != 0) { return -1; diff --git a/source/common/src/tmisce.c b/source/common/src/tmisce.c index 0a9e8f434b..d2b52b201e 100644 --- a/source/common/src/tmisce.c +++ b/source/common/src/tmisce.c @@ -228,6 +228,8 @@ int32_t dumpConfToDataBlock(SSDataBlock* pBlock, int32_t startCol) { blockDataEnsureCapacity(pBlock, cfgGetSize(pConf)); SConfigIter* pIter = cfgCreateIter(pConf); + cfgLock(pConf); + while ((pItem = cfgNextIter(pIter)) != NULL) { col = startCol; @@ -253,6 +255,8 @@ int32_t dumpConfToDataBlock(SSDataBlock* pBlock, int32_t startCol) { numOfRows++; } + cfgUnLock(pConf); + pBlock->info.rows = numOfRows; cfgDestroyIter(pIter); diff --git a/source/common/src/tmsg.c b/source/common/src/tmsg.c index 3836f13a2f..b7d1417451 100644 --- a/source/common/src/tmsg.c +++ b/source/common/src/tmsg.c @@ -5962,9 +5962,11 @@ int32_t tSerializeSBalanceVgroupLeaderReq(void *buf, int32_t bufLen, SBalanceVgr tEncoderInit(&encoder, buf, bufLen); if (tStartEncode(&encoder) < 0) return -1; - if (tEncodeI32(&encoder, pReq->useless) < 0) return -1; + if (tEncodeI32(&encoder, pReq->reserved) < 0) return -1; if (tEncodeI32(&encoder, pReq->vgId) < 0) return -1; ENCODESQL(); + if (tEncodeCStr(&encoder, pReq->db) < 0) return -1; + tEndEncode(&encoder); int32_t tlen = encoder.pos; @@ -5977,12 +5979,15 @@ int32_t tDeserializeSBalanceVgroupLeaderReq(void *buf, int32_t bufLen, SBalanceV tDecoderInit(&decoder, buf, bufLen); if (tStartDecode(&decoder) < 0) return -1; - if (tDecodeI32(&decoder, &pReq->useless) < 0) return -1; + if (tDecodeI32(&decoder, &pReq->reserved) < 0) return -1; if (!tDecodeIsEnd(&decoder)) { if (tDecodeI32(&decoder, &pReq->vgId) < 0) return -1; } - DECODESQL(); + if (!tDecodeIsEnd(&decoder)) { + if (tDecodeCStrTo(&decoder, pReq->db) < 0) return -1; + } + tEndDecode(&decoder); tDecoderClear(&decoder); diff --git a/source/common/test/dataformatTest.cpp b/source/common/test/dataformatTest.cpp index 2dfa706728..e8b7b132f2 100644 --- a/source/common/test/dataformatTest.cpp +++ b/source/common/test/dataformatTest.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wwrite-strings" @@ -475,6 +476,45 @@ TEST(testCase, AllNormTest) { taosMemoryFree(pTSchema); } +TEST(testCase, StreamAllNormTest) { + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(NULL, ctbName, groupId); + + ASSERT_STREQ("_12345", ctbName); +} + +TEST(testCase, StreamWithStbName) { + char stbName[] = "1.table.stb"; + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(stbName, ctbName, groupId); + + ASSERT_STREQ("_stb_12345", ctbName); +} + +TEST(testCase, StreamWithoutDotInStbName) { + char stbName[] = "table"; + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(stbName, ctbName, groupId); + + ASSERT_STREQ("_table_12345", ctbName); +} + +TEST(testCase, StreamWithoutDotInStbName2) { + char stbName[] = ""; + char ctbName[TSDB_TABLE_NAME_LEN] = {0}; + uint64_t groupId = 12345; + + buildCtbNameAddGroupId(stbName, ctbName, groupId); + + ASSERT_STREQ("__12345", ctbName); +} + #if 1 TEST(testCase, NoneTest) { const static int nCols = 14; diff --git a/source/dnode/mgmt/exe/dmMain.c b/source/dnode/mgmt/exe/dmMain.c index 98459512f3..f7fcd7697f 100644 --- a/source/dnode/mgmt/exe/dmMain.c +++ b/source/dnode/mgmt/exe/dmMain.c @@ -205,11 +205,11 @@ static int32_t dmParseArgs(int32_t argc, char const *argv[]) { if(i < argc - 1) { int32_t len = strlen(argv[++i]); if (len < ENCRYPT_KEY_LEN_MIN) { - printf("encrypt key is too short, it should be great or equal to %d\n", ENCRYPT_KEY_LEN_MIN); + printf("Error: Encrypt key should be at least %d characters\n", ENCRYPT_KEY_LEN_MIN); return -1; } if (len > ENCRYPT_KEY_LEN) { - printf("encrypt key overflow, it should be less or equal to %d\n", ENCRYPT_KEY_LEN); + printf("Error: Encrypt key overflow, it should be at most %d characters\n", ENCRYPT_KEY_LEN); return -1; } tstrncpy(global.encryptKey, argv[i], ENCRYPT_KEY_LEN); @@ -325,7 +325,7 @@ int main(int argc, char const *argv[]) { } if (dmParseArgs(argc, argv) != 0) { - printf("failed to start since parse args error\n"); + //printf("failed to start since parse args error\n"); taosCleanupArgs(); return -1; } @@ -380,7 +380,11 @@ int mainWindows(int argc, char **argv) { dmPrintArgs(argc, argv); - if (taosInitCfg(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs, 0) != 0) { + bool isDumpCfg = true; + if(global.generateCode) { + isDumpCfg = false; + } + if (taosInitCfg(configDir, global.envCmd, global.envFile, global.apolloUrl, global.pArgs, 0, isDumpCfg) != 0) { dError("failed to start since read config error"); taosCloseLog(); taosCleanupArgs(); diff --git a/source/dnode/mgmt/node_mgmt/src/dmEnv.c b/source/dnode/mgmt/node_mgmt/src/dmEnv.c index 12712d6585..8e760c28be 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmEnv.c +++ b/source/dnode/mgmt/node_mgmt/src/dmEnv.c @@ -17,6 +17,7 @@ #include "dmMgmt.h" #include "audit.h" #include "libs/function/tudf.h" +#include "tgrant.h" #define DM_INIT_AUDIT() \ do { \ @@ -150,6 +151,7 @@ static bool dmCheckDataDirVersion() { extern int32_t s3Begin(); extern void s3End(); +extern int8_t tsS3Enabled; #endif diff --git a/source/dnode/mgmt/node_mgmt/src/dmMgmt.c b/source/dnode/mgmt/node_mgmt/src/dmMgmt.c index 11453fcfef..e6d8663e58 100644 --- a/source/dnode/mgmt/node_mgmt/src/dmMgmt.c +++ b/source/dnode/mgmt/node_mgmt/src/dmMgmt.c @@ -18,12 +18,10 @@ #include "dmNodes.h" #include "index.h" #include "qworker.h" -#include "tstream.h" -#ifdef TD_TSZ #include "tcompression.h" #include "tglobal.h" #include "tgrant.h" -#endif +#include "tstream.h" static bool dmRequireNode(SDnode *pDnode, SMgmtWrapper *pWrapper) { SMgmtInputOpt input = dmBuildMgmtInputOpt(pWrapper); @@ -48,10 +46,8 @@ int32_t dmInitDnode(SDnode *pDnode) { goto _OVER; } -#ifdef TD_TSZ // compress module init tsCompressInit(tsLossyColumns, tsFPrecision, tsDPrecision, tsMaxRange, tsCurRange, (int)tsIfAdtFse, tsCompressor); -#endif pDnode->wrappers[DNODE].func = dmGetMgmtFunc(); pDnode->wrappers[MNODE].func = mmGetMgmtFunc(); @@ -88,7 +84,7 @@ int32_t dmInitDnode(SDnode *pDnode) { streamMetaInit(); dmInitStatusClient(pDnode); - dmInitSyncClient(pDnode); + dmInitSyncClient(pDnode); dmReportStartup("dnode-transport", "initialized"); dDebug("dnode is created, ptr:%p", pDnode); @@ -120,10 +116,8 @@ void dmCleanupDnode(SDnode *pDnode) { indexCleanup(); taosConvDestroy(); -#ifdef TD_TSZ // compress destroy tsCompressExit(); -#endif dDebug("dnode is closed, ptr:%p", pDnode); } diff --git a/source/dnode/mnode/impl/src/mndDb.c b/source/dnode/mnode/impl/src/mndDb.c index 6d638dab3b..f254fb16a5 100644 --- a/source/dnode/mnode/impl/src/mndDb.c +++ b/source/dnode/mnode/impl/src/mndDb.c @@ -821,6 +821,10 @@ static int32_t mndCheckDbEncryptKey(SMnode *pMnode, SCreateDbReq *pReq) { #ifdef TD_ENTERPRISE if (pReq->encryptAlgorithm == TSDB_ENCRYPT_ALGO_NONE) goto _exit; + if (grantCheck(TSDB_GRANT_DB_ENCRYPTION) != 0) { + code = TSDB_CODE_MND_DB_ENCRYPT_GRANT_EXPIRED; + goto _exit; + } if (tsEncryptionKeyStat != ENCRYPT_KEY_STAT_LOADED) { code = TSDB_CODE_MND_INVALID_ENCRYPT_KEY; mError("db:%s, failed to check encryption key:%" PRIi8 " in mnode leader since it's not loaded", pReq->db, @@ -903,6 +907,13 @@ static int32_t mndProcessCreateDbReq(SRpcMsg *pReq) { goto _OVER; } + if (createReq.replications == 2) { + if ((terrno = grantCheck(TSDB_GRANT_DUAL_REPLICA_HA)) != 0) { + code = terrno; + goto _OVER; + } + } + if ((code = mndCheckDbEncryptKey(pMnode, &createReq)) != 0) { terrno = code; goto _OVER; @@ -1163,6 +1174,12 @@ static int32_t mndProcessAlterDbReq(SRpcMsg *pReq) { goto _OVER; } + if (alterReq.replications == 2) { + if ((code = grantCheck(TSDB_GRANT_DUAL_REPLICA_HA)) != 0) { + goto _OVER; + } + } + int32_t numOfTopics = 0; if (mndGetNumOfTopics(pMnode, pDb->name, &numOfTopics) != 0) { goto _OVER; diff --git a/source/dnode/vnode/src/inc/tsdb.h b/source/dnode/vnode/src/inc/tsdb.h index 01db196479..c85316f810 100644 --- a/source/dnode/vnode/src/inc/tsdb.h +++ b/source/dnode/vnode/src/inc/tsdb.h @@ -120,12 +120,32 @@ static FORCE_INLINE int64_t tsdbLogicToFileSize(int64_t lSize, int32_t szPage) { #define tsdbRowFromBlockData(BLOCKDATA, IROW) \ ((TSDBROW){.type = TSDBROW_COL_FMT, .pBlockData = (BLOCKDATA), .iRow = (IROW)}) +#define TSDBROW_INIT_KEY(_ROW, _KEY) \ + { \ + if ((_ROW)->type == TSDBROW_ROW_FMT) { \ + _KEY.version = (_ROW)->version; \ + _KEY.ts = (_ROW)->pTSRow->ts; \ + } else { \ + _KEY.version = (_ROW)->pBlockData->aVersion[(_ROW)->iRow]; \ + _KEY.ts = (_ROW)->pBlockData->aTSKEY[(_ROW)->iRow]; \ + } \ + } + +#define tColRowGetKey(_pBlock, _irow, _key) \ + { \ + (_key)->ts = (_pBlock)->aTSKEY[(_irow)]; \ + (_key)->numOfPKs = 0; \ + if ((_pBlock)->nColData > 0) { \ + tColRowGetPrimaryKey((_pBlock), (_irow), (_key)); \ + } \ + } + void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal *pColVal); int32_t tsdbRowCompare(const void *p1, const void *p2); int32_t tsdbRowCompareWithoutVersion(const void *p1, const void *p2); int32_t tsdbRowKeyCmpr(const STsdbRowKey *key1, const STsdbRowKey *key2); void tsdbRowGetKey(TSDBROW *row, STsdbRowKey *key); -void tColRowGetKey(SBlockData *pBlock, int32_t irow, SRowKey *key); +void tColRowGetPrimaryKey(SBlockData *pBlock, int32_t irow, SRowKey *key); // STSDBRowIter @@ -902,9 +922,16 @@ typedef struct { SColVal colVal; } SLastCol; +typedef struct { + int8_t lflag; + STsdbRowKey tsdbRowKey; + SColVal colVal; +} SLastUpdateCtx; + int32_t tsdbOpenCache(STsdb *pTsdb); void tsdbCloseCache(STsdb *pTsdb); -int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *row); +int32_t tsdbCacheRowFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, int64_t version, int32_t nRow, SRow **aRow); +int32_t tsdbCacheColFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SBlockData *pBlockData); int32_t tsdbCacheDel(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSKEY sKey, TSKEY eKey); int32_t tsdbCacheInsertLast(SLRUCache *pCache, tb_uid_t uid, TSDBROW *row, STsdb *pTsdb); @@ -946,7 +973,28 @@ static FORCE_INLINE int32_t tsdbKeyCmprFn(const void *p1, const void *p2) { // #define SL_NODE_FORWARD(n, l) ((n)->forwards[l]) // #define SL_NODE_BACKWARD(n, l) ((n)->forwards[(n)->level + (l)]) -TSDBROW *tsdbTbDataIterGet(STbDataIter *pIter); +static FORCE_INLINE TSDBROW *tsdbTbDataIterGet(STbDataIter *pIter) { + if (pIter == NULL) return NULL; + + if (pIter->pRow) { + return pIter->pRow; + } + + if (pIter->backward) { + if (pIter->pNode == pIter->pTbData->sl.pHead) { + return NULL; + } + } else { + if (pIter->pNode == pIter->pTbData->sl.pTail) { + return NULL; + } + } + + pIter->pRow = &pIter->row; + pIter->row = pIter->pNode->row; + + return pIter->pRow; +} typedef struct { int64_t suid; diff --git a/source/dnode/vnode/src/tsdb/tsdbCache.c b/source/dnode/vnode/src/tsdb/tsdbCache.c index 6f26e3a63f..f602ee5fe3 100644 --- a/source/dnode/vnode/src/tsdb/tsdbCache.c +++ b/source/dnode/vnode/src/tsdb/tsdbCache.c @@ -16,6 +16,7 @@ #include "functionMgt.h" #include "tsdb.h" #include "tsdbDataFileRW.h" +#include "tsdbIter.h" #include "tsdbReadUtil.h" #include "vnd.h" @@ -359,7 +360,10 @@ static int32_t tsdbCacheDeserializeV0(char const *value, SLastCol *pLastCol) { if (IS_VAR_DATA_TYPE(pLastCol->colVal.value.type)) { pLastCol->colVal.value.nData = pLastColV0->colVal.value.nData; - pLastCol->colVal.value.pData = (uint8_t *)(&pLastColV0[1]); + pLastCol->colVal.value.pData = NULL; + if (pLastCol->colVal.value.nData > 0) { + pLastCol->colVal.value.pData = (uint8_t *)(&pLastColV0[1]); + } return sizeof(SLastColV0) + pLastColV0->colVal.value.nData; } else { pLastCol->colVal.value.val = pLastColV0->colVal.value.val; @@ -372,7 +376,7 @@ static SLastCol *tsdbCacheDeserialize(char const *value, size_t size) { return NULL; } - SLastCol* pLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); + SLastCol *pLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); if (NULL == pLastCol) { return NULL; } @@ -401,8 +405,11 @@ static SLastCol *tsdbCacheDeserialize(char const *value, size_t size) { offset += sizeof(SValue); if (IS_VAR_DATA_TYPE(pLastCol->rowKey.pks[i].type)) { - pLastCol->rowKey.pks[i].pData = (uint8_t *)value + offset; - offset += pLastCol->rowKey.pks[i].nData; + pLastCol->rowKey.pks[i].pData = NULL; + if (pLastCol->rowKey.pks[i].nData > 0) { + pLastCol->rowKey.pks[i].pData = (uint8_t *)value + offset; + offset += pLastCol->rowKey.pks[i].nData; + } } } @@ -940,10 +947,37 @@ typedef struct { SLastKey key; } SIdxKey; -static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal *pColVal) { - uint8_t *pVal = NULL; +static int32_t tsdbCacheUpdateValue(SValue *pOld, SValue *pNew) { + uint8_t *pFree = NULL; int nData = 0; + if (IS_VAR_DATA_TYPE(pOld->type)) { + pFree = pOld->pData; + nData = pOld->nData; + } + + *pOld = *pNew; + if (IS_VAR_DATA_TYPE(pNew->type)) { + if (nData < pNew->nData) { + pOld->pData = taosMemoryCalloc(1, pNew->nData); + } else { + pOld->pData = pFree; + pFree = NULL; + } + + if (pNew->nData) { + memcpy(pOld->pData, pNew->pData, pNew->nData); + } else { + pFree = pOld->pData; + pOld->pData = NULL; + } + } + + taosMemoryFreeClear(pFree); + return 0; +} + +static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal *pColVal) { // update rowkey pLastCol->rowKey.ts = pRowKey->ts; pLastCol->rowKey.numOfPKs = pRowKey->numOfPKs; @@ -951,87 +985,43 @@ static void tsdbCacheUpdateLastCol(SLastCol *pLastCol, SRowKey *pRowKey, SColVal SValue *pPKValue = &pLastCol->rowKey.pks[i]; SValue *pNewPKValue = &pRowKey->pks[i]; - if (IS_VAR_DATA_TYPE(pPKValue->type)) { - pVal = pPKValue->pData; - nData = pPKValue->nData; - } - *pPKValue = *pNewPKValue; - if (IS_VAR_DATA_TYPE(pPKValue->type)) { - if (nData < pPKValue->nData) { - taosMemoryFree(pVal); - pPKValue->pData = taosMemoryCalloc(1, pNewPKValue->nData); - } else { - pPKValue->pData = pVal; - } - if (pNewPKValue->nData) { - memcpy(pPKValue->pData, pNewPKValue->pData, pNewPKValue->nData); - } - } + (void)tsdbCacheUpdateValue(pPKValue, pNewPKValue); } // update colval - if (IS_VAR_DATA_TYPE(pColVal->value.type)) { - nData = pLastCol->colVal.value.nData; - pVal = pLastCol->colVal.value.pData; - } - pLastCol->colVal = *pColVal; - if (IS_VAR_DATA_TYPE(pColVal->value.type)) { - if (nData < pColVal->value.nData) { - taosMemoryFree(pVal); - pLastCol->colVal.value.pData = taosMemoryCalloc(1, pColVal->value.nData); - } else { - pLastCol->colVal.value.pData = pVal; - } - if (pColVal->value.nData) { - memcpy(pLastCol->colVal.value.pData, pColVal->value.pData, pColVal->value.nData); - } - } + pLastCol->colVal.cid = pColVal->cid; + pLastCol->colVal.flag = pColVal->flag; + (void)tsdbCacheUpdateValue(&pLastCol->colVal.value, &pColVal->value); if (!pLastCol->dirty) { pLastCol->dirty = 1; } } -int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow) { +static int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SArray *updCtxArray) { + if (!updCtxArray || TARRAY_SIZE(updCtxArray) == 0) { + return 0; + } + int32_t code = 0; - // 1, fetch schema - STSchema *pTSchema = NULL; - int32_t sver = TSDBROW_SVERSION(pRow); - - code = metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema); - if (code != TSDB_CODE_SUCCESS) { - terrno = code; - return -1; - } - - // 2, iterate col values into array - SArray *aColVal = taosArrayInit(32, sizeof(SColVal)); - - STSDBRowIter iter = {0}; - tsdbRowIterOpen(&iter, pRow, pTSchema); - - for (SColVal *pColVal = tsdbRowIterNext(&iter); pColVal; pColVal = tsdbRowIterNext(&iter)) { - taosArrayPush(aColVal, pColVal); - } - - tsdbRowClose(&iter); - - // 3, build keys & multi get from rocks - int num_keys = TARRAY_SIZE(aColVal); + int num_keys = TARRAY_SIZE(updCtxArray); SArray *remainCols = NULL; SLRUCache *pCache = pTsdb->lruCache; - STsdbRowKey tsdbRowKey = {0}; - tsdbRowGetKey(pRow, &tsdbRowKey); - SRowKey *pRowKey = &tsdbRowKey.key; - taosThreadMutexLock(&pTsdb->lruMutex); for (int i = 0; i < num_keys; ++i) { - SColVal *pColVal = (SColVal *)taosArrayGet(aColVal, i); - int16_t cid = pColVal->cid; + SLastUpdateCtx *updCtx = (SLastUpdateCtx *)taosArrayGet(updCtxArray, i); - SLastKey *key = &(SLastKey){.lflag = LFLAG_LAST_ROW, .uid = uid, .cid = cid}; + int8_t lflag = updCtx->lflag; + SRowKey *pRowKey = &updCtx->tsdbRowKey.key; + SColVal *pColVal = &updCtx->colVal; + + if (lflag == LFLAG_LAST && !COL_VAL_IS_VALUE(pColVal)) { + continue; + } + + SLastKey *key = &(SLastKey){.lflag = lflag, .uid = uid, .cid = pColVal->cid}; size_t klen = ROCKS_KEY_LEN; LRUHandle *h = taosLRUCacheLookup(pCache, key, klen); if (h) { @@ -1047,23 +1037,6 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow } taosArrayPush(remainCols, &(SIdxKey){i, *key}); } - - if (COL_VAL_IS_VALUE(pColVal)) { - key->lflag = LFLAG_LAST; - LRUHandle *h = taosLRUCacheLookup(pCache, key, klen); - if (h) { - SLastCol *pLastCol = (SLastCol *)taosLRUCacheValue(pCache, h); - if (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1) { - tsdbCacheUpdateLastCol(pLastCol, pRowKey, pColVal); - } - taosLRUCacheRelease(pCache, h, false); - } else { - if (!remainCols) { - remainCols = taosArrayInit(num_keys * 2, sizeof(SIdxKey)); - } - taosArrayPush(remainCols, &(SIdxKey){i, *key}); - } - } } if (remainCols) { @@ -1091,99 +1064,60 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow rocksdb_writebatch_t *wb = pTsdb->rCache.writebatch; for (int i = 0; i < num_keys; ++i) { SIdxKey *idxKey = &((SIdxKey *)TARRAY_DATA(remainCols))[i]; - SColVal *pColVal = (SColVal *)TARRAY_DATA(aColVal) + idxKey->idx; - // SColVal *pColVal = (SColVal *)taosArrayGet(aColVal, idxKey->idx); + SLastUpdateCtx *updCtx = (SLastUpdateCtx *)taosArrayGet(updCtxArray, i); + SRowKey *pRowKey = &updCtx->tsdbRowKey.key; + SColVal *pColVal = &updCtx->colVal; SLastCol *pLastCol = tsdbCacheDeserialize(values_list[i], values_list_sizes[i]); SLastCol *PToFree = pLastCol; - if (IS_LAST_ROW_KEY(idxKey->key)) { - int32_t cmp_res = 1; - if (pLastCol) { - cmp_res = tRowKeyCompare(&pLastCol->rowKey, pRowKey); - } + if (IS_LAST_KEY(idxKey->key) && !COL_VAL_IS_VALUE(pColVal)) { + continue; + } - if (NULL == pLastCol || cmp_res < 0 || (cmp_res == 0 && !COL_VAL_IS_NONE(pColVal))) { - char *value = NULL; - size_t vlen = 0; - SLastCol lastColTmp = {.rowKey = *pRowKey, .colVal = *pColVal}; - tsdbCacheSerialize(&lastColTmp, &value, &vlen); + int32_t cmp_res = 1; + if (pLastCol) { + cmp_res = tRowKeyCompare(&pLastCol->rowKey, pRowKey); + } - taosThreadMutexLock(&pTsdb->rCache.rMutex); + if (NULL == pLastCol || cmp_res < 0 || (cmp_res == 0 && !COL_VAL_IS_NONE(pColVal))) { + char *value = NULL; + size_t vlen = 0; + SLastCol lastColTmp = {.rowKey = *pRowKey, .colVal = *pColVal}; + tsdbCacheSerialize(&lastColTmp, &value, &vlen); - rocksdb_writebatch_put(wb, (char *)&idxKey->key, ROCKS_KEY_LEN, value, vlen); + taosThreadMutexLock(&pTsdb->rCache.rMutex); - taosThreadMutexUnlock(&pTsdb->rCache.rMutex); + rocksdb_writebatch_put(wb, (char *)&idxKey->key, ROCKS_KEY_LEN, value, vlen); - pLastCol = &lastColTmp; - SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); - *pTmpLastCol = *pLastCol; - pLastCol = pTmpLastCol; + taosThreadMutexUnlock(&pTsdb->rCache.rMutex); - size_t charge = sizeof(*pLastCol); - for (int8_t i = 0; i < pLastCol->rowKey.numOfPKs; i++) { - SValue *pValue = &pLastCol->rowKey.pks[i]; - if (IS_VAR_DATA_TYPE(pValue->type)) { - reallocVarDataVal(pValue); - charge += pValue->nData; - } - } + pLastCol = &lastColTmp; + SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); + *pTmpLastCol = *pLastCol; + pLastCol = pTmpLastCol; - if (IS_VAR_DATA_TYPE(pLastCol->colVal.value.type)) { - reallocVarData(&pLastCol->colVal); - charge += pLastCol->colVal.value.nData; - } - - LRUStatus status = taosLRUCacheInsert(pTsdb->lruCache, &idxKey->key, ROCKS_KEY_LEN, pLastCol, charge, - tsdbCacheDeleter, NULL, TAOS_LRU_PRIORITY_LOW, &pTsdb->flushState); - if (status != TAOS_LRU_STATUS_OK) { - code = -1; - } - - taosMemoryFree(value); - } - } else { - if (COL_VAL_IS_VALUE(pColVal)) { - if (NULL == pLastCol || (tRowKeyCompare(&pLastCol->rowKey, pRowKey) != 1)) { - char *value = NULL; - size_t vlen = 0; - SLastCol lastColTmp = {.rowKey = *pRowKey, .colVal = *pColVal}; - tsdbCacheSerialize(&lastColTmp, &value, &vlen); - - taosThreadMutexLock(&pTsdb->rCache.rMutex); - - rocksdb_writebatch_put(wb, (char *)&idxKey->key, ROCKS_KEY_LEN, value, vlen); - - taosThreadMutexUnlock(&pTsdb->rCache.rMutex); - - pLastCol = &lastColTmp; - SLastCol *pTmpLastCol = taosMemoryCalloc(1, sizeof(SLastCol)); - *pTmpLastCol = *pLastCol; - pLastCol = pTmpLastCol; - - size_t charge = sizeof(*pLastCol); - for (int8_t i = 0; i < pLastCol->rowKey.numOfPKs; i++) { - SValue *pValue = &pLastCol->rowKey.pks[i]; - if (IS_VAR_DATA_TYPE(pValue->type)) { - reallocVarDataVal(pValue); - charge += pValue->nData; - } - } - - if (IS_VAR_DATA_TYPE(pLastCol->colVal.value.type)) { - reallocVarData(&pLastCol->colVal); - charge += pLastCol->colVal.value.nData; - } - - LRUStatus status = taosLRUCacheInsert(pTsdb->lruCache, &idxKey->key, ROCKS_KEY_LEN, pLastCol, charge, - tsdbCacheDeleter, NULL, TAOS_LRU_PRIORITY_LOW, &pTsdb->flushState); - if (status != TAOS_LRU_STATUS_OK) { - code = -1; - } - - taosMemoryFree(value); + size_t charge = sizeof(*pLastCol); + for (int8_t i = 0; i < pLastCol->rowKey.numOfPKs; i++) { + SValue *pValue = &pLastCol->rowKey.pks[i]; + if (IS_VAR_DATA_TYPE(pValue->type)) { + reallocVarDataVal(pValue); + charge += pValue->nData; } } + + if (IS_VAR_DATA_TYPE(pLastCol->colVal.value.type)) { + reallocVarData(&pLastCol->colVal); + charge += pLastCol->colVal.value.nData; + } + + LRUStatus status = taosLRUCacheInsert(pTsdb->lruCache, &idxKey->key, ROCKS_KEY_LEN, pLastCol, charge, + tsdbCacheDeleter, NULL, TAOS_LRU_PRIORITY_LOW, &pTsdb->flushState); + if (status != TAOS_LRU_STATUS_OK) { + code = -1; + } + + taosMemoryFree(value); } taosMemoryFreeClear(PToFree); @@ -1203,11 +1137,152 @@ int32_t tsdbCacheUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, TSDBROW *pRow taosThreadMutexUnlock(&pTsdb->lruMutex); _exit: - taosArrayDestroy(aColVal); - taosMemoryFree(pTSchema); return code; } +int32_t tsdbCacheRowFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, int64_t version, int32_t nRow, + SRow **aRow) { + int32_t code = 0; + + // 1. prepare last + TSDBROW lRow = {.type = TSDBROW_ROW_FMT, .pTSRow = aRow[nRow - 1], .version = version}; + + STSchema *pTSchema = NULL; + int32_t sver = TSDBROW_SVERSION(&lRow); + SArray *ctxArray = NULL; + SSHashObj *iColHash = NULL; + + code = metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema); + if (code != TSDB_CODE_SUCCESS) { + terrno = code; + goto _exit; + } + + TSDBROW tRow = {.type = TSDBROW_ROW_FMT, .version = version}; + int32_t nCol = pTSchema->numOfCols; + + ctxArray = taosArrayInit(nCol, sizeof(SLastUpdateCtx)); + iColHash = tSimpleHashInit(16, taosGetDefaultHashFunction(TSDB_DATA_TYPE_INT)); + + // 1. prepare by lrow + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&lRow, &tsdbRowKey); + + STSDBRowIter iter = {0}; + tsdbRowIterOpen(&iter, &lRow, pTSchema); + int32_t iCol = 0; + for (SColVal *pColVal = tsdbRowIterNext(&iter); pColVal && iCol < nCol; pColVal = tsdbRowIterNext(&iter), iCol++) { + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST_ROW, .tsdbRowKey = tsdbRowKey, .colVal = *pColVal}; + taosArrayPush(ctxArray, &updateCtx); + + if (!COL_VAL_IS_VALUE(pColVal)) { + tSimpleHashPut(iColHash, &iCol, sizeof(iCol), NULL, 0); + continue; + } + updateCtx.lflag = LFLAG_LAST; + taosArrayPush(ctxArray, &updateCtx); + } + tsdbRowClose(&iter); + + // 2. prepare by the other rows + for (int32_t iRow = nRow - 2; iRow >= 0; --iRow) { + if (tSimpleHashGetSize(iColHash) == 0) { + break; + } + + tRow.pTSRow = aRow[iRow]; + + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&tRow, &tsdbRowKey); + + void *pIte = NULL; + int32_t iter = 0; + while ((pIte = tSimpleHashIterate(iColHash, pIte, &iter)) != NULL) { + int32_t iCol = ((int32_t *)pIte)[0]; + SColVal colVal = COL_VAL_NONE(0, 0); + tsdbRowGetColVal(&tRow, pTSchema, iCol, &colVal); + + if (COL_VAL_IS_VALUE(&colVal)) { + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST, .tsdbRowKey = tsdbRowKey, .colVal = colVal}; + taosArrayPush(ctxArray, &updateCtx); + tSimpleHashIterateRemove(iColHash, &iCol, sizeof(iCol), &pIte, &iter); + } + } + } + + // 3. do update + tsdbCacheUpdate(pTsdb, suid, uid, ctxArray); + +_exit: + taosMemoryFreeClear(pTSchema); + taosArrayDestroy(ctxArray); + tSimpleHashCleanup(iColHash); + return code; +} + +int32_t tsdbCacheColFormatUpdate(STsdb *pTsdb, tb_uid_t suid, tb_uid_t uid, SBlockData *pBlockData) { + int32_t code = 0; + + TSDBROW lRow = tsdbRowFromBlockData(pBlockData, pBlockData->nRow - 1); + + STSchema *pTSchema = NULL; + int32_t sver = TSDBROW_SVERSION(&lRow); + SArray *ctxArray = NULL; + + code = metaGetTbTSchemaEx(pTsdb->pVnode->pMeta, suid, uid, sver, &pTSchema); + if (code != TSDB_CODE_SUCCESS) { + terrno = code; + goto _exit; + } + + ctxArray = taosArrayInit(pBlockData->nColData, sizeof(SLastUpdateCtx)); + + // 1. prepare last + TSDBROW tRow = tsdbRowFromBlockData(pBlockData, 0); + + for (int32_t iColData = 0; iColData < pBlockData->nColData; ++iColData) { + SColData *pColData = &pBlockData->aColData[iColData]; + if ((pColData->flag & HAS_VALUE) != HAS_VALUE) { + continue; + } + + for (tRow.iRow = pBlockData->nRow - 1; tRow.iRow >= 0; --tRow.iRow) { + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&tRow, &tsdbRowKey); + + uint8_t colType = tColDataGetBitValue(pColData, tRow.iRow); + if (colType == 2) { + SColVal colVal = COL_VAL_NONE(pColData->cid, pColData->type); + tColDataGetValue(pColData, tRow.iRow, &colVal); + + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST, .tsdbRowKey = tsdbRowKey, .colVal = colVal}; + taosArrayPush(ctxArray, &updateCtx); + break; + } + } + } + + // 2. prepare last row + STsdbRowKey tsdbRowKey = {0}; + tsdbRowGetKey(&lRow, &tsdbRowKey); + + STSDBRowIter iter = {0}; + tsdbRowIterOpen(&iter, &lRow, pTSchema); + for (SColVal *pColVal = tsdbRowIterNext(&iter); pColVal; pColVal = tsdbRowIterNext(&iter)) { + SLastUpdateCtx updateCtx = {.lflag = LFLAG_LAST_ROW, .tsdbRowKey = tsdbRowKey, .colVal = *pColVal}; + taosArrayPush(ctxArray, &updateCtx); + } + tsdbRowClose(&iter); + + // 3. do update + tsdbCacheUpdate(pTsdb, suid, uid, ctxArray); + +_exit: + taosMemoryFreeClear(pTSchema); + taosArrayDestroy(ctxArray); + return 0; +} + static int32_t mergeLastCid(tb_uid_t uid, STsdb *pTsdb, SArray **ppLastArray, SCacheRowsReader *pr, int16_t *aCols, int nCols, int16_t *slotIds); @@ -1481,7 +1556,10 @@ static int32_t tsdbCacheLoadFromRaw(STsdb *pTsdb, tb_uid_t uid, SArray *pLastArr taosArraySet(pLastArray, idxKey->idx, pLastCol); // taosArrayRemove(remainCols, i); - if (!pTmpColArray) { + if (/*!pTmpColArray*/ lastTmpIndexArray && !lastTmpColArray) { + continue; + } + if (/*!pTmpColArray*/ lastrowTmpIndexArray && lastrowTmpColArray) { continue; } diff --git a/source/dnode/vnode/src/tsdb/tsdbMemTable.c b/source/dnode/vnode/src/tsdb/tsdbMemTable.c index be15a4fecf..211855b245 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMemTable.c +++ b/source/dnode/vnode/src/tsdb/tsdbMemTable.c @@ -629,14 +629,12 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData, SMemSkipListNode *pos[SL_MAX_LEVEL]; TSDBROW tRow = tsdbRowFromBlockData(pBlockData, 0); STsdbRowKey key; - TSDBROW lRow; // last row // first row tsdbRowGetKey(&tRow, &key); tbDataMovePosTo(pTbData, pos, &key, SL_MOVE_BACKWARD); if ((code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 0))) goto _exit; pTbData->minKey = TMIN(pTbData->minKey, key.key.ts); - lRow = tRow; // remain row ++tRow.iRow; @@ -653,7 +651,6 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData, } if ((code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 1))) goto _exit; - lRow = tRow; ++tRow.iRow; } @@ -664,7 +661,7 @@ static int32_t tsdbInsertColDataToTable(SMemTable *pMemTable, STbData *pTbData, } if (!TSDB_CACHE_NO(pMemTable->pTsdb->pVnode->config)) { - tsdbCacheUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, &lRow); + tsdbCacheColFormatUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, pBlockData); } // SMemTable @@ -688,7 +685,6 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, SMemSkipListNode *pos[SL_MAX_LEVEL]; TSDBROW tRow = {.type = TSDBROW_ROW_FMT, .version = version}; int32_t iRow = 0; - TSDBROW lRow; // backward put first data tRow.pTSRow = aRow[iRow++]; @@ -696,7 +692,6 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, tbDataMovePosTo(pTbData, pos, &key, SL_MOVE_BACKWARD); code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 0); if (code) goto _exit; - lRow = tRow; pTbData->minKey = TMIN(pTbData->minKey, key.key.ts); @@ -717,8 +712,6 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, code = tbDataDoPut(pMemTable, pTbData, pos, &tRow, 1); if (code) goto _exit; - lRow = tRow; - iRow++; } } @@ -727,7 +720,7 @@ static int32_t tsdbInsertRowDataToTable(SMemTable *pMemTable, STbData *pTbData, pTbData->maxKey = key.key.ts; } if (!TSDB_CACHE_NO(pMemTable->pTsdb->pVnode->config)) { - tsdbCacheUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, &lRow); + tsdbCacheRowFormatUpdate(pMemTable->pTsdb, pTbData->suid, pTbData->uid, version, nRow, aRow); } // SMemTable @@ -806,26 +799,3 @@ SArray *tsdbMemTableGetTbDataArray(SMemTable *pMemTable) { _exit: return aTbDataP; } - -TSDBROW *tsdbTbDataIterGet(STbDataIter *pIter) { - if (pIter == NULL) return NULL; - - if (pIter->pRow) { - return pIter->pRow; - } - - if (pIter->backward) { - if (pIter->pNode == pIter->pTbData->sl.pHead) { - return NULL; - } - } else { - if (pIter->pNode == pIter->pTbData->sl.pTail) { - return NULL; - } - } - - pIter->pRow = &pIter->row; - pIter->row = pIter->pNode->row; - - return pIter->pRow; -} diff --git a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c index 6b459f90f3..2a49c1ba0a 100644 --- a/source/dnode/vnode/src/tsdb/tsdbMergeTree.c +++ b/source/dnode/vnode/src/tsdb/tsdbMergeTree.c @@ -828,7 +828,7 @@ static FORCE_INLINE int32_t tLDataIterCmprFn(const SRBTreeNode *p1, const SRBTre SLDataIter *pIter1 = (SLDataIter *)(((uint8_t *)p1) - offsetof(SLDataIter, node)); SLDataIter *pIter2 = (SLDataIter *)(((uint8_t *)p2) - offsetof(SLDataIter, node)); - SRowKey rkey1, rkey2; + SRowKey rkey1 = {0}, rkey2 = {0}; tRowGetKeyEx(&pIter1->rInfo.row, &rkey1); tRowGetKeyEx(&pIter2->rInfo.row, &rkey2); diff --git a/source/dnode/vnode/src/tsdb/tsdbRead2.c b/source/dnode/vnode/src/tsdb/tsdbRead2.c index 381e040c5b..dd79726762 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRead2.c +++ b/source/dnode/vnode/src/tsdb/tsdbRead2.c @@ -24,6 +24,16 @@ #define ASCENDING_TRAVERSE(o) (o == TSDB_ORDER_ASC) #define getCurrentKeyInSttBlock(_r) (&((_r)->currentKey)) +#define tColRowGetKeyDeepCopy(_pBlock, _irow, _slotId, _pKey) \ + do { \ + (_pKey)->ts = (_pBlock)->aTSKEY[(_irow)]; \ + (_pKey)->numOfPKs = 0; \ + if ((_slotId) != -1) { \ + tColRowGetPriamyKeyDeepCopy(_pBlock, _irow, _slotId, _pKey); \ + } \ + } while (0) + +#define outOfTimeWindow(_ts, _window) (((_ts) > (_window)->ekey) || ((_ts) < (_window)->skey)) typedef struct { bool overlapWithNeighborBlock; @@ -75,11 +85,9 @@ static void getMemTableTimeRange(STsdbReader* pReader, int64_t* pMaxKey static void updateComposedBlockInfo(STsdbReader* pReader, double el, STableBlockScanInfo* pBlockScanInfo); static int32_t buildFromPreFilesetBuffer(STsdbReader* pReader); -static bool outOfTimeWindow(int64_t ts, STimeWindow* pWindow) { return (ts > pWindow->ekey) || (ts < pWindow->skey); } - static void resetPreFilesetMemTableListIndex(SReaderStatus* pStatus); -int32_t pkCompEx(SRowKey* p1, SRowKey* p2) { +FORCE_INLINE int32_t pkCompEx(SRowKey* p1, SRowKey* p2) { if (p2 == NULL) { return 1; } @@ -101,13 +109,7 @@ int32_t pkCompEx(SRowKey* p1, SRowKey* p2) { } } -static void tColRowGetKeyDeepCopy(SBlockData* pBlock, int32_t irow, int32_t slotId, SRowKey* pKey) { - pKey->ts = pBlock->aTSKEY[irow]; - if (slotId == -1) { - pKey->numOfPKs = 0; - return; - } - +static void tColRowGetPriamyKeyDeepCopy(SBlockData* pBlock, int32_t irow, int32_t slotId, SRowKey* pKey) { SColData* pColData = &pBlock->aColData[slotId]; SColVal cv; tColDataGetValue(pColData, irow, &cv); @@ -131,13 +133,7 @@ static int32_t tGetPrimaryKeyIndex(uint8_t *p, SPrimaryKeyIndex *index) { return n; } -static void tRowGetKeyDeepCopy(SRow* pRow, SRowKey* pKey) { - pKey->ts = pRow->ts; - pKey->numOfPKs = pRow->numOfPKs; - if (pKey->numOfPKs == 0) { - return; - } - +static void tRowGetPrimaryKeyDeepCopy(SRow* pRow, SRowKey* pKey) { SPrimaryKeyIndex indices[TD_MAX_PK_COLS]; ASSERT(pKey->numOfPKs <= TD_MAX_PK_COLS); @@ -1735,7 +1731,7 @@ static int32_t doMergeBufAndFileRows(STsdbReader* pReader, STableBlockScanInfo* pSttKey = getCurrentKeyInSttBlock(pSttBlockReader); } - SRowKey k; + SRowKey k = {0}; tRowGetKeyEx(pRow, &k); STSchema* pSchema = NULL; @@ -1939,7 +1935,7 @@ static int32_t doMergeMultiLevelRows(STsdbReader* pReader, STableBlockScanInfo* pfKey = NULL; } - SRowKey k, ik; + SRowKey k = {0}, ik = {0}; tRowGetKeyEx(pRow, &k); tRowGetKeyEx(piRow, &ik); @@ -2086,7 +2082,7 @@ int32_t doInitMemDataIter(STsdbReader* pReader, STbData** pData, STableBlockScan } static void doForwardDataIter(SRowKey* pKey, SIterInfo* pIter, STableBlockScanInfo* pBlockScanInfo, STsdbReader* pReader) { - SRowKey rowKey; + SRowKey rowKey = {0}; while (1) { TSDBROW* pRow = getValidMemRow(pIter, pBlockScanInfo->delSkyline, pReader); @@ -3559,7 +3555,7 @@ bool hasBeenDropped(const SArray* pDelList, int32_t* index, int64_t key, int64_t return false; } -TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* pReader) { +FORCE_INLINE TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* pReader) { if (!pIter->hasVal) { return NULL; } @@ -3567,7 +3563,8 @@ TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* p int32_t order = pReader->info.order; TSDBROW* pRow = tsdbTbDataIterGet(pIter->iter); - TSDBKEY key = TSDBROW_KEY(pRow); + TSDBKEY key; + TSDBROW_INIT_KEY(pRow, key); if (outOfTimeWindow(key.ts, &pReader->info.window)) { pIter->hasVal = false; return NULL; @@ -3593,7 +3590,7 @@ TSDBROW* getValidMemRow(SIterInfo* pIter, const SArray* pDelList, STsdbReader* p pRow = tsdbTbDataIterGet(pIter->iter); - key = TSDBROW_KEY(pRow); + TSDBROW_INIT_KEY(pRow, key); if (outOfTimeWindow(key.ts, &pReader->info.window)) { pIter->hasVal = false; return NULL; @@ -3632,10 +3629,12 @@ int32_t doMergeRowsInBuf(SIterInfo* pIter, uint64_t uid, SRowKey *pCurKey, SArra break; } - SRowKey nextKey = {0}; - tRowGetKeyEx(pRow, &nextKey); - if (pkCompEx(pCurKey, &nextKey) != 0) { - break; + if (pCurKey->numOfPKs > 0) { + SRowKey nextKey = {0}; + tRowGetKeyEx(pRow, &nextKey); + if (pkCompEx(pCurKey, &nextKey) != 0) { + break; + } } STSchema* pTSchema = NULL; @@ -3785,12 +3784,14 @@ int32_t doMergeMemTableMultiRows(TSDBROW* pRow, SRowKey* pKey, uint64_t uid, SIt return TSDB_CODE_SUCCESS; } - SRowKey nextRowKey = {0}; - tRowGetKeyEx(pNextRow, &nextRowKey); - if (pKey->numOfPKs > 0 && pkCompEx(pKey, &nextRowKey) != 0) { - *pResRow = current; - *freeTSRow = false; - return TSDB_CODE_SUCCESS; + if (pKey->numOfPKs > 0) { + SRowKey nextRowKey = {0}; + tRowGetKeyEx(pNextRow, &nextRowKey); + if (pkCompEx(pKey, &nextRowKey) != 0) { + *pResRow = current; + *freeTSRow = false; + return TSDB_CODE_SUCCESS; + } } } } @@ -3801,7 +3802,7 @@ int32_t doMergeMemTableMultiRows(TSDBROW* pRow, SRowKey* pKey, uint64_t uid, SIt // start to merge duplicated rows STSchema* pTSchema = NULL; if (current.type == TSDBROW_ROW_FMT) { // get the correct schema for row-wise data in memory - pTSchema = doGetSchemaForTSRow(TSDBROW_SVERSION(¤t), pReader, uid); + pTSchema = doGetSchemaForTSRow(current.pTSRow->sver, pReader, uid); if (pTSchema == NULL) { return terrno; } @@ -3814,7 +3815,7 @@ int32_t doMergeMemTableMultiRows(TSDBROW* pRow, SRowKey* pKey, uint64_t uid, SIt STSchema* pTSchema1 = NULL; if (pNextRow->type == TSDBROW_ROW_FMT) { // get the correct schema for row-wise data in memory - pTSchema1 = doGetSchemaForTSRow(TSDBROW_SVERSION(pNextRow), pReader, uid); + pTSchema1 = doGetSchemaForTSRow(pNextRow->pTSRow->sver, pReader, uid); if (pTSchema1 == NULL) { return terrno; } @@ -3926,37 +3927,49 @@ static int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbRea // todo refactor bool asc = ASCENDING_TRAVERSE(pReader->info.order); if (piter->hasVal) { - TSDBKEY k = TSDBROW_KEY(pRow); - if ((k.ts >= endKey && asc) || (k.ts <= endKey && !asc)) { + tRowGetKeyEx(pRow, &rowKey); + if ((rowKey.ts >= endKey && asc) || (rowKey.ts <= endKey && !asc)) { pRow = NULL; } } if (piiter->hasVal) { - TSDBKEY k = TSDBROW_KEY(piRow); - if ((k.ts >= endKey && asc) || (k.ts <= endKey && !asc)) { + tRowGetKeyEx(piRow, &irowKey); + if ((irowKey.ts >= endKey && asc) || (irowKey.ts <= endKey && !asc)) { piRow = NULL; } } - if (piter->hasVal && piiter->hasVal && pRow != NULL && piRow != NULL) { - tRowGetKeyEx(pRow, &rowKey); - tRowGetKeyEx(piRow, &irowKey); - + if (pRow != NULL && piRow != NULL) { int32_t code = TSDB_CODE_SUCCESS; - int32_t ret = pkCompEx(&rowKey, &irowKey); - if (ret != 0) { - if ((ret > 0 && asc) || (ret < 0 && (!asc))) { // ik.ts < k.ts + if (rowKey.numOfPKs == 0) { + if ((rowKey.ts > irowKey.ts && asc) || (rowKey.ts < irowKey.ts && (!asc))) { // ik.ts < k.ts code = doMergeMemTableMultiRows(piRow, &irowKey, uid, piiter, pDelList, pResRow, pReader, freeTSRow); - } else if ((ret < 0 && asc) || (ret > 0 && (!asc))) { + } else if ((rowKey.ts < irowKey.ts && asc) || (rowKey.ts > irowKey.ts && (!asc))) { code = doMergeMemTableMultiRows(pRow, &rowKey, uid, piter, pDelList, pResRow, pReader, freeTSRow); + } else { // ik.ts == k.ts + *freeTSRow = true; + pResRow->type = TSDBROW_ROW_FMT; + code = doMergeMemIMemRows(pRow, &rowKey, piRow, &irowKey, pBlockScanInfo, pReader, &pResRow->pTSRow); + if (code != TSDB_CODE_SUCCESS) { + return code; + } } - } else { // ik.ts == k.ts - *freeTSRow = true; - pResRow->type = TSDBROW_ROW_FMT; - code = doMergeMemIMemRows(pRow, &rowKey, piRow, &irowKey, pBlockScanInfo, pReader, &pResRow->pTSRow); - if (code != TSDB_CODE_SUCCESS) { - return code; + } else { + int32_t ret = pkCompEx(&rowKey, &irowKey); + if (ret != 0) { + if ((ret > 0 && asc) || (ret < 0 && (!asc))) { // ik.ts < k.ts + code = doMergeMemTableMultiRows(piRow, &irowKey, uid, piiter, pDelList, pResRow, pReader, freeTSRow); + } else if ((ret < 0 && asc) || (ret > 0 && (!asc))) { + code = doMergeMemTableMultiRows(pRow, &rowKey, uid, piter, pDelList, pResRow, pReader, freeTSRow); + } + } else { // ik.ts == k.ts + *freeTSRow = true; + pResRow->type = TSDBROW_ROW_FMT; + code = doMergeMemIMemRows(pRow, &rowKey, piRow, &irowKey, pBlockScanInfo, pReader, &pResRow->pTSRow); + if (code != TSDB_CODE_SUCCESS) { + return code; + } } } @@ -3964,12 +3977,10 @@ static int32_t tsdbGetNextRowInMem(STableBlockScanInfo* pBlockScanInfo, STsdbRea } if (piter->hasVal && pRow != NULL) { - tRowGetKeyEx(pRow, &rowKey); return doMergeMemTableMultiRows(pRow, &rowKey, uid, piter, pDelList, pResRow, pReader, freeTSRow); } if (piiter->hasVal && piRow != NULL) { - tRowGetKeyEx(piRow, &irowKey); return doMergeMemTableMultiRows(piRow, &irowKey, uid, piiter, pDelList, pResRow, pReader, freeTSRow); } @@ -4095,7 +4106,11 @@ int32_t buildDataBlockFromBufImpl(STableBlockScanInfo* pBlockScanInfo, int64_t e if (row.type == TSDBROW_ROW_FMT) { code = doAppendRowFromTSRow(pBlock, pReader, row.pTSRow, pBlockScanInfo); if (code == TSDB_CODE_SUCCESS) { - tRowGetKeyDeepCopy(row.pTSRow, &pBlockScanInfo->lastProcKey); + pBlockScanInfo->lastProcKey.ts = row.pTSRow->ts; + pBlockScanInfo->lastProcKey.numOfPKs = row.pTSRow->numOfPKs; + if (row.pTSRow->numOfPKs > 0) { + tRowGetPrimaryKeyDeepCopy(row.pTSRow, &pBlockScanInfo->lastProcKey); + } } if (freeTSRow) { diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c index 1a62c824d7..8ab7f7eeef 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.c @@ -212,7 +212,7 @@ static void initLastProcKey(STableBlockScanInfo *pScanInfo, STsdbReader* pReader int32_t numOfPks = pReader->suppInfo.numOfPks; bool asc = ASCENDING_TRAVERSE(pReader->info.order); int8_t type = pReader->suppInfo.pk.type; - int8_t bytes = pReader->suppInfo.pk.bytes; + int32_t bytes = pReader->suppInfo.pk.bytes; SRowKey* pRowKey = &pScanInfo->lastProcKey; if (asc) { @@ -1056,7 +1056,7 @@ static int32_t sortUidComparFn(const void* p1, const void* p2) { const SSttKeyRange* px1 = p1; const SSttKeyRange* px2 = p2; - int32_t ret = tRowKeyCompare(&px1, px2); + int32_t ret = tRowKeyCompare(&px1->skey, &px2->skey); return ret; } diff --git a/source/dnode/vnode/src/tsdb/tsdbReadUtil.h b/source/dnode/vnode/src/tsdb/tsdbReadUtil.h index 5f0a58c378..6c76f8c372 100644 --- a/source/dnode/vnode/src/tsdb/tsdbReadUtil.h +++ b/source/dnode/vnode/src/tsdb/tsdbReadUtil.h @@ -38,14 +38,18 @@ extern "C" { (_k)->ekey.ts = INT64_MIN; \ } while (0); -#define tRowGetKeyEx(_pRow, _pKey) \ - do { \ - if ((_pRow)->type == TSDBROW_ROW_FMT) { \ - tRowGetKey((_pRow)->pTSRow, (_pKey)); \ - } else { \ - tColRowGetKey((_pRow)->pBlockData, (_pRow)->iRow, (_pKey)); \ - } \ - } while (0) +#define tRowGetKeyEx(_pRow, _pKey) \ + { \ + if ((_pRow)->type == TSDBROW_ROW_FMT) { \ + (_pKey)->ts = (_pRow)->pTSRow->ts; \ + if ((_pRow)->pTSRow->numOfPKs > 0) { \ + tRowGetPrimaryKey((_pRow)->pTSRow, (_pKey)); \ + } \ + } else { \ + (_pKey)->ts = (_pRow)->pBlockData->aTSKEY[(_pRow)->iRow]; \ + tColRowGetPrimaryKey((_pRow)->pBlockData, (_pRow)->iRow, (_pKey)); \ + } \ + } typedef enum { READER_STATUS_SUSPEND = 0x1, diff --git a/source/dnode/vnode/src/tsdb/tsdbRetention.c b/source/dnode/vnode/src/tsdb/tsdbRetention.c index 5a138d2bed..f4344296b4 100644 --- a/source/dnode/vnode/src/tsdb/tsdbRetention.c +++ b/source/dnode/vnode/src/tsdb/tsdbRetention.c @@ -757,6 +757,16 @@ _exit: int32_t tsdbS3Migrate(STsdb *tsdb, int64_t now, int32_t sync) { int32_t code = 0; + extern int8_t tsS3EnabledCfg; + + int32_t expired = grantCheck(TSDB_GRANT_OBJECT_STORAGE); + if (expired && tsS3Enabled) { + tsdbWarn("s3 grant expired: %d", expired); + tsS3Enabled = false; + } else if (!expired && tsS3EnabledCfg) { + tsS3Enabled = true; + } + if (!tsS3Enabled) { return code; } diff --git a/source/dnode/vnode/src/tsdb/tsdbUtil.c b/source/dnode/vnode/src/tsdb/tsdbUtil.c index 60459b0d21..58075cf0ac 100644 --- a/source/dnode/vnode/src/tsdb/tsdbUtil.c +++ b/source/dnode/vnode/src/tsdb/tsdbUtil.c @@ -601,17 +601,21 @@ void tsdbRowGetColVal(TSDBROW *pRow, STSchema *pTSchema, int32_t iCol, SColVal * STColumn *pTColumn = &pTSchema->columns[iCol]; SValue value; - ASSERT(iCol > 0); - if (pRow->type == TSDBROW_ROW_FMT) { tRowGet(pRow->pTSRow, pTSchema, iCol, pColVal); } else if (pRow->type == TSDBROW_COL_FMT) { - SColData *pColData = tBlockDataGetColData(pRow->pBlockData, pTColumn->colId); - - if (pColData) { - tColDataGetValue(pColData, pRow->iRow, pColVal); + if (iCol == 0) { + *pColVal = + COL_VAL_VALUE(PRIMARYKEY_TIMESTAMP_COL_ID, + ((SValue){.type = TSDB_DATA_TYPE_TIMESTAMP, .val = pRow->pBlockData->aTSKEY[pRow->iRow]})); } else { - *pColVal = COL_VAL_NONE(pTColumn->colId, pTColumn->type); + SColData *pColData = tBlockDataGetColData(pRow->pBlockData, pTColumn->colId); + + if (pColData) { + tColDataGetValue(pColData, pRow->iRow, pColVal); + } else { + *pColVal = COL_VAL_NONE(pTColumn->colId, pTColumn->type); + } } } else { ASSERT(0); @@ -628,10 +632,7 @@ void tsdbRowGetKey(TSDBROW *row, STsdbRowKey *key) { } } -void tColRowGetKey(SBlockData *pBlock, int32_t irow, SRowKey *key) { - key->ts = pBlock->aTSKEY[irow]; - key->numOfPKs = 0; - +void tColRowGetPrimaryKey(SBlockData *pBlock, int32_t irow, SRowKey *key) { for (int32_t i = 0; i < pBlock->nColData; i++) { SColData *pColData = &pBlock->aColData[i]; if (pColData->cflag & COL_IS_KEY) { @@ -1820,4 +1821,4 @@ uint32_t tsdbCvtTimestampAlg(uint32_t alg) { DEFINE_VAR(alg) return 0; -} \ No newline at end of file +} diff --git a/source/libs/catalog/src/ctgCache.c b/source/libs/catalog/src/ctgCache.c index 7d392346ad..9f9f783458 100644 --- a/source/libs/catalog/src/ctgCache.c +++ b/source/libs/catalog/src/ctgCache.c @@ -3226,14 +3226,24 @@ int32_t ctgGetTbTSMAFromCache(SCatalog* pCtg, SCtgTbTSMACtx* pCtx, int32_t dbIdx // get tb cache pName = taosArrayGet(pList, i); pTbCache = taosHashAcquire(dbCache->tbCache, pName->tname, strlen(pName->tname)); - if (!pTbCache || !pTbCache->pMeta) { + if (!pTbCache) { ctgDebug("tb: %s.%s not in cache", dbFName, pName->tname); ctgAddTSMAFetch(&pCtx->pFetches, dbIdx, i, fetchIdx, baseResIdx + i, flag, FETCH_TSMA_SOURCE_TB_META, NULL); taosArrayPush(pCtx->pResList, &(SMetaRes){0}); continue; } + CTG_LOCK(CTG_READ, &pTbCache->metaLock); + if (!pTbCache->pMeta) { + CTG_UNLOCK(CTG_READ, &pTbCache->metaLock); + ctgDebug("tb: %s.%s not in cache", dbFName, pName->tname); + ctgAddTSMAFetch(&pCtx->pFetches, dbIdx, i, fetchIdx, baseResIdx + i, flag, FETCH_TSMA_SOURCE_TB_META, NULL); + taosArrayPush(pCtx->pResList, &(SMetaRes){0}); + taosHashRelease(dbCache->tbCache, pTbCache); + continue; + } uint64_t suid = pTbCache->pMeta->suid; int8_t tbType = pTbCache->pMeta->tableType; + CTG_UNLOCK(CTG_READ, &pTbCache->metaLock); taosHashRelease(dbCache->tbCache, pTbCache); SName tsmaSourceTbName = *pName; diff --git a/source/libs/executor/inc/executorInt.h b/source/libs/executor/inc/executorInt.h index fac216e6e6..592231f043 100644 --- a/source/libs/executor/inc/executorInt.h +++ b/source/libs/executor/inc/executorInt.h @@ -446,17 +446,23 @@ typedef struct STimeWindowAggSupp { SColumnInfoData timeWindowData; // query time window info for scalar function execution. } STimeWindowAggSupp; +typedef struct SSteamOpBasicInfo { + int32_t primaryPkIndex; + bool updateOperatorInfo; +} SSteamOpBasicInfo; + typedef struct SStreamScanInfo { - SExprInfo* pPseudoExpr; - int32_t numOfPseudoExpr; - SExprSupp tbnameCalSup; - SExprSupp* pPartTbnameSup; - SExprSupp tagCalSup; - int32_t primaryTsIndex; // primary time stamp slot id - int32_t primaryKeyIndex; - SReadHandle readHandle; - SInterval interval; // if the upstream is an interval operator, the interval info is also kept here. - SColMatchInfo matchInfo; + SSteamOpBasicInfo basic; + SExprInfo* pPseudoExpr; + int32_t numOfPseudoExpr; + SExprSupp tbnameCalSup; + SExprSupp* pPartTbnameSup; + SExprSupp tagCalSup; + int32_t primaryTsIndex; // primary time stamp slot id + int32_t primaryKeyIndex; + SReadHandle readHandle; + SInterval interval; // if the upstream is an interval operator, the interval info is also kept here. + SColMatchInfo matchInfo; SArray* pBlockLists; // multiple SSDatablock. SSDataBlock* pRes; // result SSDataBlock @@ -568,10 +574,6 @@ typedef struct SOpCheckPointInfo { SHashObj* children; // key:child id } SOpCheckPointInfo; -typedef struct SSteamOpBasicInfo { - int32_t primaryPkIndex; -} SSteamOpBasicInfo; - typedef struct SStreamIntervalOperatorInfo { SOptrBasicInfo binfo; // basic info SSteamOpBasicInfo basic; diff --git a/source/libs/executor/inc/streamexecutorInt.h b/source/libs/executor/inc/streamexecutorInt.h new file mode 100644 index 0000000000..8b61b93601 --- /dev/null +++ b/source/libs/executor/inc/streamexecutorInt.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * 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. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +#ifndef STREAM_EXECUTORINT_H +#define STREAM_EXECUTORINT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "executorInt.h" + +void setStreamOperatorState(SSteamOpBasicInfo* pBasicInfo, EStreamType type); +bool needSaveStreamOperatorInfo(SSteamOpBasicInfo* pBasicInfo); +void saveStreamOperatorStateComplete(SSteamOpBasicInfo* pBasicInfo); + +#ifdef __cplusplus +} +#endif + +#endif // STREAM_EXECUTORINT_H diff --git a/source/libs/executor/src/executor.c b/source/libs/executor/src/executor.c index 29f667cb66..2f360044c9 100644 --- a/source/libs/executor/src/executor.c +++ b/source/libs/executor/src/executor.c @@ -824,14 +824,17 @@ int32_t qKillTask(qTaskInfo_t tinfo, int32_t rspCode) { qDebug("%s sync killed execTask", GET_TASKID(pTaskInfo)); setTaskKilled(pTaskInfo, TSDB_CODE_TSC_QUERY_KILLED); - taosWLockLatch(&pTaskInfo->lock); - while (qTaskIsExecuting(pTaskInfo)) { - taosMsleep(10); + while(1) { + taosWLockLatch(&pTaskInfo->lock); + if (qTaskIsExecuting(pTaskInfo)) { // let's wait for 100 ms and try again + taosWUnLockLatch(&pTaskInfo->lock); + taosMsleep(100); + } else { // not running now + pTaskInfo->code = rspCode; + taosWUnLockLatch(&pTaskInfo->lock); + return TSDB_CODE_SUCCESS; + } } - pTaskInfo->code = rspCode; - taosWUnLockLatch(&pTaskInfo->lock); - - return TSDB_CODE_SUCCESS; } bool qTaskIsExecuting(qTaskInfo_t qinfo) { diff --git a/source/libs/executor/src/scanoperator.c b/source/libs/executor/src/scanoperator.c index 38d3fa8e96..110aabf9b1 100644 --- a/source/libs/executor/src/scanoperator.c +++ b/source/libs/executor/src/scanoperator.c @@ -20,6 +20,7 @@ #include "os.h" #include "querynodes.h" #include "systable.h" +#include "streamexecutorInt.h" #include "tname.h" #include "tdatablock.h" @@ -2426,10 +2427,13 @@ void streamScanOperatorSaveCheckpoint(SStreamScanInfo* pInfo) { if (!pInfo->pState) { return; } - void* pBuf = NULL; - int32_t len = streamScanOperatorEncode(pInfo, &pBuf); - pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_SCAN_OP_CHECKPOINT_NAME, strlen(STREAM_SCAN_OP_CHECKPOINT_NAME), pBuf, len); - taosMemoryFree(pBuf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + void* pBuf = NULL; + int32_t len = streamScanOperatorEncode(pInfo, &pBuf); + pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_SCAN_OP_CHECKPOINT_NAME, strlen(STREAM_SCAN_OP_CHECKPOINT_NAME), pBuf, len); + taosMemoryFree(pBuf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } // other properties are recovered from the execution plan @@ -2582,6 +2586,7 @@ FETCH_NEXT_BLOCK: case STREAM_NORMAL: case STREAM_GET_ALL: printDataBlock(pBlock, getStreamOpName(pOperator->operatorType), GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); return pBlock; case STREAM_RETRIEVE: { pInfo->blockType = STREAM_INPUT__DATA_SUBMIT; @@ -2622,6 +2627,7 @@ FETCH_NEXT_BLOCK: if (pInfo->pDeleteDataRes->info.rows > 0) { printSpecDataBlock(pInfo->pDeleteDataRes, getStreamOpName(pOperator->operatorType), "delete result", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pInfo->pDeleteDataRes->info.type); return pInfo->pDeleteDataRes; } else { goto FETCH_NEXT_BLOCK; @@ -2639,6 +2645,7 @@ FETCH_NEXT_BLOCK: if (pInfo->pDeleteDataRes->info.rows > 0) { pInfo->scanMode = STREAM_SCAN_FROM_DATAREADER_RANGE; printSpecDataBlock(pInfo->pDeleteDataRes, getStreamOpName(pOperator->operatorType), "delete result", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pInfo->pDeleteDataRes->info.type); return pInfo->pDeleteDataRes; } else { goto FETCH_NEXT_BLOCK; @@ -2652,6 +2659,7 @@ FETCH_NEXT_BLOCK: break; } printDataBlock(pBlock, getStreamOpName(pOperator->operatorType), GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); return pBlock; } else if (pInfo->blockType == STREAM_INPUT__DATA_SUBMIT) { qDebug("stream scan mode:%d, %s", pInfo->scanMode, id); @@ -2659,6 +2667,7 @@ FETCH_NEXT_BLOCK: case STREAM_SCAN_FROM_RES: { pInfo->scanMode = STREAM_SCAN_FROM_READERHANDLE; doCheckUpdate(pInfo, pInfo->pRes->info.window.ekey, pInfo->pRes); + setStreamOperatorState(&pInfo->basic, pInfo->pRes->info.type); doFilter(pInfo->pRes, pOperator->exprSupp.pFilterInfo, NULL); pInfo->pRes->info.dataLoad = 1; blockDataUpdateTsWindow(pInfo->pRes, pInfo->primaryTsIndex); @@ -2762,6 +2771,7 @@ FETCH_NEXT_BLOCK: } doCheckUpdate(pInfo, pBlockInfo->window.ekey, pInfo->pRes); + setStreamOperatorState(&pInfo->basic, pInfo->pRes->info.type); doFilter(pInfo->pRes, pOperator->exprSupp.pFilterInfo, NULL); blockDataUpdateTsWindow(pInfo->pRes, pInfo->primaryTsIndex); diff --git a/source/libs/executor/src/streamcountwindowoperator.c b/source/libs/executor/src/streamcountwindowoperator.c index 491a1da6aa..050e67e15d 100644 --- a/source/libs/executor/src/streamcountwindowoperator.c +++ b/source/libs/executor/src/streamcountwindowoperator.c @@ -17,6 +17,7 @@ #include "functionMgt.h" #include "operator.h" #include "querytask.h" +#include "streamexecutorInt.h" #include "tchecksum.h" #include "tcommon.h" #include "tdatablock.h" @@ -415,13 +416,16 @@ void* doStreamCountDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOperato void doStreamCountSaveCheckpoint(SOperatorInfo* pOperator) { SStreamCountAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamCountEncodeOpState(NULL, 0, pOperator, true); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamCountEncodeOpState(&pBuf, len, pOperator, true); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_COUNT_OP_CHECKPOINT_NAME, - strlen(STREAM_COUNT_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamCountEncodeOpState(NULL, 0, pOperator, true); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamCountEncodeOpState(&pBuf, len, pOperator, true); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_COUNT_OP_CHECKPOINT_NAME, + strlen(STREAM_COUNT_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } void doResetCountWindows(SStreamAggSupporter* pAggSup, SSDataBlock* pBlock) { @@ -550,6 +554,7 @@ static SSDataBlock* doStreamCountAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT) { bool add = pInfo->destHasPrimaryKey && IS_NORMAL_COUNT_OP(pOperator); diff --git a/source/libs/executor/src/streameventwindowoperator.c b/source/libs/executor/src/streameventwindowoperator.c index 1116851323..64d6244fe7 100644 --- a/source/libs/executor/src/streameventwindowoperator.c +++ b/source/libs/executor/src/streameventwindowoperator.c @@ -18,6 +18,7 @@ #include "functionMgt.h" #include "operator.h" #include "querytask.h" +#include "streamexecutorInt.h" #include "tchecksum.h" #include "tcommon.h" #include "tcompare.h" @@ -458,13 +459,16 @@ void* doStreamEventDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOperato void doStreamEventSaveCheckpoint(SOperatorInfo* pOperator) { SStreamEventAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamEventEncodeOpState(NULL, 0, pOperator); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamEventEncodeOpState(&pBuf, len, pOperator); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_EVENT_OP_CHECKPOINT_NAME, - strlen(STREAM_EVENT_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamEventEncodeOpState(NULL, 0, pOperator); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamEventEncodeOpState(&pBuf, len, pOperator); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_EVENT_OP_CHECKPOINT_NAME, + strlen(STREAM_EVENT_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } static SSDataBlock* buildEventResult(SOperatorInfo* pOperator) { @@ -531,6 +535,7 @@ static SSDataBlock* doStreamEventAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { diff --git a/source/libs/executor/src/streamexecutorInt.c b/source/libs/executor/src/streamexecutorInt.c new file mode 100644 index 0000000000..875ae00350 --- /dev/null +++ b/source/libs/executor/src/streamexecutorInt.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2019 TAOS Data, Inc. + * + * This program is free software: you can use, redistribute, and/or modify + * it under the terms of the GNU Affero General Public License, version 3 + * or later ("AGPL"), as published by the Free Software Foundation. + * + * 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. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +#include "executorInt.h" + +void setStreamOperatorState(SSteamOpBasicInfo* pBasicInfo, EStreamType type) { + if (type != STREAM_GET_ALL && type != STREAM_CHECKPOINT) { + pBasicInfo->updateOperatorInfo = true; + } +} + +bool needSaveStreamOperatorInfo(SSteamOpBasicInfo* pBasicInfo) { + return pBasicInfo->updateOperatorInfo; +} + +void saveStreamOperatorStateComplete(SSteamOpBasicInfo* pBasicInfo) { + pBasicInfo->updateOperatorInfo = false; +} diff --git a/source/libs/executor/src/streamtimewindowoperator.c b/source/libs/executor/src/streamtimewindowoperator.c index 08ce0e25f1..2da9ed0353 100644 --- a/source/libs/executor/src/streamtimewindowoperator.c +++ b/source/libs/executor/src/streamtimewindowoperator.c @@ -18,6 +18,7 @@ #include "functionMgt.h" #include "operator.h" #include "querytask.h" +#include "streamexecutorInt.h" #include "tchecksum.h" #include "tcommon.h" #include "tcompare.h" @@ -1211,13 +1212,16 @@ void doStreamIntervalDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera void doStreamIntervalSaveCheckpoint(SOperatorInfo* pOperator) { SStreamIntervalOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamIntervalEncodeOpState(NULL, 0, pOperator); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamIntervalEncodeOpState(&pBuf, len, pOperator); - pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_INTERVAL_OP_CHECKPOINT_NAME, - strlen(STREAM_INTERVAL_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamIntervalEncodeOpState(NULL, 0, pOperator); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamIntervalEncodeOpState(&pBuf, len, pOperator); + pInfo->stateStore.streamStateSaveInfo(pInfo->pState, STREAM_INTERVAL_OP_CHECKPOINT_NAME, + strlen(STREAM_INTERVAL_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } static void copyIntervalDeleteKey(SSHashObj* pMap, SArray* pWins) { @@ -1347,6 +1351,7 @@ static SSDataBlock* doStreamFinalIntervalAgg(SOperatorInfo* pOperator) { } pInfo->numOfDatapack++; printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_NORMAL || pBlock->info.type == STREAM_PULL_DATA) { pInfo->binfo.pRes->info.type = pBlock->info.type; @@ -2690,13 +2695,16 @@ void* doStreamSessionDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOpera void doStreamSessionSaveCheckpoint(SOperatorInfo* pOperator) { SStreamSessionAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamSessionEncodeOpState(NULL, 0, pOperator, true); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamSessionEncodeOpState(&pBuf, len, pOperator, true); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_SESSION_OP_CHECKPOINT_NAME, - strlen(STREAM_SESSION_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamSessionEncodeOpState(NULL, 0, pOperator, true); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamSessionEncodeOpState(&pBuf, len, pOperator, true); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_SESSION_OP_CHECKPOINT_NAME, + strlen(STREAM_SESSION_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } void resetUnCloseSessionWinInfo(SSHashObj* winMap) { @@ -2766,6 +2774,7 @@ static SSDataBlock* doStreamSessionAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -3176,6 +3185,7 @@ static SSDataBlock* doStreamSessionSemiAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -3673,13 +3683,16 @@ void* doStreamStateDecodeOpState(void* buf, int32_t len, SOperatorInfo* pOperato void doStreamStateSaveCheckpoint(SOperatorInfo* pOperator) { SStreamStateAggOperatorInfo* pInfo = pOperator->info; - int32_t len = doStreamStateEncodeOpState(NULL, 0, pOperator, true); - void* buf = taosMemoryCalloc(1, len); - void* pBuf = buf; - len = doStreamStateEncodeOpState(&pBuf, len, pOperator, true); - pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_STATE_OP_CHECKPOINT_NAME, - strlen(STREAM_STATE_OP_CHECKPOINT_NAME), buf, len); - taosMemoryFree(buf); + if (needSaveStreamOperatorInfo(&pInfo->basic)) { + int32_t len = doStreamStateEncodeOpState(NULL, 0, pOperator, true); + void* buf = taosMemoryCalloc(1, len); + void* pBuf = buf; + len = doStreamStateEncodeOpState(&pBuf, len, pOperator, true); + pInfo->streamAggSup.stateStore.streamStateSaveInfo(pInfo->streamAggSup.pState, STREAM_STATE_OP_CHECKPOINT_NAME, + strlen(STREAM_STATE_OP_CHECKPOINT_NAME), buf, len); + taosMemoryFree(buf); + saveStreamOperatorStateComplete(&pInfo->basic); + } } static SSDataBlock* buildStateResult(SOperatorInfo* pOperator) { @@ -3746,6 +3759,7 @@ static SSDataBlock* doStreamStateAgg(SOperatorInfo* pOperator) { break; } printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -4069,6 +4083,7 @@ static SSDataBlock* doStreamIntervalAgg(SOperatorInfo* pOperator) { pInfo->numOfDatapack++; printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_DELETE_DATA || pBlock->info.type == STREAM_DELETE_RESULT || pBlock->info.type == STREAM_CLEAR) { @@ -4465,6 +4480,7 @@ static SSDataBlock* doStreamMidIntervalAgg(SOperatorInfo* pOperator) { } pInfo->numOfDatapack++; printSpecDataBlock(pBlock, getStreamOpName(pOperator->operatorType), "recv", GET_TASKID(pTaskInfo)); + setStreamOperatorState(&pInfo->basic, pBlock->info.type); if (pBlock->info.type == STREAM_NORMAL || pBlock->info.type == STREAM_PULL_DATA) { pInfo->binfo.pRes->info.type = pBlock->info.type; diff --git a/source/libs/executor/src/sysscanoperator.c b/source/libs/executor/src/sysscanoperator.c index db83c46155..10d38b3d95 100644 --- a/source/libs/executor/src/sysscanoperator.c +++ b/source/libs/executor/src/sysscanoperator.c @@ -1651,50 +1651,56 @@ static SSDataBlock* doSysTableScan(SOperatorInfo* pOperator) { SSysTableScanInfo* pInfo = pOperator->info; char dbName[TSDB_DB_NAME_LEN] = {0}; - if (isTaskKilled(pOperator->pTaskInfo)) { - setOperatorCompleted(pOperator); - return NULL; - } + while (1) { - blockDataCleanup(pInfo->pRes); - - const char* name = tNameGetTableName(&pInfo->name); - if (pInfo->showRewrite) { - getDBNameFromCondition(pInfo->pCondition, dbName); - if (strncasecmp(name, TSDB_INS_TABLE_COMPACTS, TSDB_TABLE_FNAME_LEN) != 0 && - strncasecmp(name, TSDB_INS_TABLE_COMPACT_DETAILS, TSDB_TABLE_FNAME_LEN) != 0) { - sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); - } - } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0) { - getDBNameFromCondition(pInfo->pCondition, dbName); - if (dbName[0]) sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); - sysTableIsCondOnOneTable(pInfo->pCondition, pInfo->req.filterTb); - } - - SSDataBlock* pBlock = NULL; - if (strncasecmp(name, TSDB_INS_TABLE_TABLES, TSDB_TABLE_FNAME_LEN) == 0) { - pBlock = sysTableScanUserTables(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_TAGS, TSDB_TABLE_FNAME_LEN) == 0) { - pBlock = sysTableScanUserTags(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->readHandle.mnd == NULL) { - pBlock = sysTableScanUserCols(pOperator); - } else if (strncasecmp(name, TSDB_INS_TABLE_STABLES, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->showRewrite && - IS_SYS_DBNAME(dbName)) { - pBlock = sysTableScanUserSTables(pOperator); - } else { // load the meta from mnode of the given epset - pBlock = sysTableScanFromMNode(pOperator, pInfo, name, pTaskInfo); - } - - sysTableScanFillTbName(pOperator, pInfo, name, pBlock); - if (pBlock != NULL) { - bool limitReached = applyLimitOffset(&pInfo->limitInfo, pBlock, pTaskInfo); - if (limitReached) { + if (isTaskKilled(pOperator->pTaskInfo)) { setOperatorCompleted(pOperator); + return NULL; } - return pBlock->info.rows > 0 ? pBlock : NULL; - } else { - return NULL; + blockDataCleanup(pInfo->pRes); + + const char* name = tNameGetTableName(&pInfo->name); + if (pInfo->showRewrite) { + getDBNameFromCondition(pInfo->pCondition, dbName); + if (strncasecmp(name, TSDB_INS_TABLE_COMPACTS, TSDB_TABLE_FNAME_LEN) != 0 && + strncasecmp(name, TSDB_INS_TABLE_COMPACT_DETAILS, TSDB_TABLE_FNAME_LEN) != 0) { + sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); + } + } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0) { + getDBNameFromCondition(pInfo->pCondition, dbName); + if (dbName[0]) sprintf(pInfo->req.db, "%d.%s", pInfo->accountId, dbName); + sysTableIsCondOnOneTable(pInfo->pCondition, pInfo->req.filterTb); + } + + SSDataBlock* pBlock = NULL; + if (strncasecmp(name, TSDB_INS_TABLE_TABLES, TSDB_TABLE_FNAME_LEN) == 0) { + pBlock = sysTableScanUserTables(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_TAGS, TSDB_TABLE_FNAME_LEN) == 0) { + pBlock = sysTableScanUserTags(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_COLS, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->readHandle.mnd == NULL) { + pBlock = sysTableScanUserCols(pOperator); + } else if (strncasecmp(name, TSDB_INS_TABLE_STABLES, TSDB_TABLE_FNAME_LEN) == 0 && pInfo->showRewrite && + IS_SYS_DBNAME(dbName)) { + pBlock = sysTableScanUserSTables(pOperator); + } else { // load the meta from mnode of the given epset + pBlock = sysTableScanFromMNode(pOperator, pInfo, name, pTaskInfo); + } + + sysTableScanFillTbName(pOperator, pInfo, name, pBlock); + if (pBlock != NULL) { + bool limitReached = applyLimitOffset(&pInfo->limitInfo, pBlock, pTaskInfo); + if (limitReached) { + setOperatorCompleted(pOperator); + } + + if (pBlock->info.rows == 0) { + continue; + } + return pBlock; + } else { + return NULL; + } } } diff --git a/source/libs/function/src/udfd.c b/source/libs/function/src/udfd.c index 2a5e594ba3..e2ea6c1374 100644 --- a/source/libs/function/src/udfd.c +++ b/source/libs/function/src/udfd.c @@ -1424,7 +1424,7 @@ int main(int argc, char *argv[]) { printf("failed to start since init log error\n"); } - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0, true) != 0) { fnError("failed to start since read config error"); return -2; } diff --git a/source/libs/function/test/runUdf.c b/source/libs/function/test/runUdf.c index aa8b88b738..eef6cdc3d3 100644 --- a/source/libs/function/test/runUdf.c +++ b/source/libs/function/test/runUdf.c @@ -127,7 +127,7 @@ int aggregateFuncTest() { int main(int argc, char *argv[]) { parseArgs(argc, argv); initLog(); - if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0) != 0) { + if (taosInitCfg(configDir, NULL, NULL, NULL, NULL, 0, true) != 0) { fnError("failed to start since read config error"); return -1; } diff --git a/source/libs/geometry/src/geosWrapper.c b/source/libs/geometry/src/geosWrapper.c index ad2d477a13..c7c83f4796 100644 --- a/source/libs/geometry/src/geosWrapper.c +++ b/source/libs/geometry/src/geosWrapper.c @@ -86,6 +86,67 @@ _exit: return code; } +static int initWktRegex(pcre2_code **ppRegex, pcre2_match_data **ppMatchData) { + int ret = 0; + char *wktPatternWithSpace = taosMemoryCalloc(4, 1024); + sprintf( + wktPatternWithSpace, + "^( *)point( *)z?m?( *)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *)\\)))|linestring( *)z?m?( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))|polygon( *)z?m?( " + "*)((empty)|(\\(( *)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( " + "*)\\)))|multipoint( *)z?m?( *)((empty)|(\\(( " + "*)((([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}|((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *)\\))))(( *)(,)( " + "*)((([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}|((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *)\\))))( *))*( " + "*)\\)))|multilinestring( *)z?m?( *)((empty)|(\\(( *)((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( " + "*)\\)))|multipolygon( *)z?m?( *)((empty)|(\\(( *)((empty)|(\\(( *)((empty)|(\\(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))(( *)(,)( " + "*)((empty)|(\\(( *)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}(( *)(,)( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?(( " + "*)(([-+]?[0-9]+\\.?[0-9]*)|([-+]?[0-9]*\\.?[0-9]+))(e[-+]?[0-9]+)?){1,3}( *))*( *)\\)))( *))*( *)\\)))( *))*( " + "*)\\)))|(GEOCOLLECTION\\((?R)(( *)(,)( *)(?R))*( *)\\))( *)$"); + + ret = doRegComp(ppRegex, ppMatchData, wktPatternWithSpace); + taosMemoryFree(wktPatternWithSpace); + return ret; +} + int32_t initCtxGeomFromText() { int32_t code = TSDB_CODE_FAILED; SGeosContext* geosCtx = getThreadLocalGeosCtx(); @@ -113,6 +174,10 @@ int32_t initCtxGeomFromText() { } } + if (geosCtx->WKTRegex == NULL) { + if (initWktRegex(&geosCtx->WKTRegex, &geosCtx->WKTMatchData) != 0) return code; + } + return TSDB_CODE_SUCCESS; } @@ -125,6 +190,11 @@ int32_t doGeomFromText(const char *inputWKT, unsigned char **outputGeom, size_t GEOSGeometry *geom = NULL; unsigned char *wkb = NULL; + if (doRegExec(inputWKT, geosCtx->WKTRegex, geosCtx->WKTMatchData) != 0) { + code = TSDB_CODE_FUNC_FUNTION_PARA_VALUE; + goto _exit; + } + geom = GEOSWKTReader_read_r(geosCtx->handle, geosCtx->WKTReader, inputWKT); if (geom == NULL) { code = TSDB_CODE_FUNC_FUNTION_PARA_VALUE; diff --git a/source/libs/nodes/src/nodesCodeFuncs.c b/source/libs/nodes/src/nodesCodeFuncs.c index 0eaa2fd2b0..1aa30b854f 100644 --- a/source/libs/nodes/src/nodesCodeFuncs.c +++ b/source/libs/nodes/src/nodesCodeFuncs.c @@ -187,6 +187,8 @@ const char* nodesNodeName(ENodeType type) { return "BalanceVgroupStmt"; case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: return "BalanceVgroupLeaderStmt"; + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return "BalanceVgroupLeaderStmt"; case QUERY_NODE_MERGE_VGROUP_STMT: return "MergeVgroupStmt"; case QUERY_NODE_SHOW_DB_ALIVE_STMT: @@ -7607,6 +7609,8 @@ static int32_t specificNodeToJson(const void* pObj, SJson* pJson) { return TSDB_CODE_SUCCESS; // SBalanceVgroupStmt has no fields to serialize. case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: return TSDB_CODE_SUCCESS; // SBalanceVgroupLeaderStmt has no fields to serialize. + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return TSDB_CODE_SUCCESS; case QUERY_NODE_MERGE_VGROUP_STMT: return mergeVgroupStmtToJson(pObj, pJson); case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: @@ -7953,7 +7957,9 @@ static int32_t jsonToSpecificNode(const SJson* pJson, void* pObj) { case QUERY_NODE_BALANCE_VGROUP_STMT: return TSDB_CODE_SUCCESS; // SBalanceVgroupStmt has no fields to deserialize. case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: - return TSDB_CODE_SUCCESS; // SBalanceVgroupLeaderStmt has no fields to deserialize. + return TSDB_CODE_SUCCESS; + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return TSDB_CODE_SUCCESS; // SBalanceVgroupLeaderStmt has no fields to deserialize. case QUERY_NODE_MERGE_VGROUP_STMT: return jsonToMergeVgroupStmt(pJson, pObj); case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: diff --git a/source/libs/nodes/src/nodesUtilFuncs.c b/source/libs/nodes/src/nodesUtilFuncs.c index adb011e3ec..cbffcde875 100644 --- a/source/libs/nodes/src/nodesUtilFuncs.c +++ b/source/libs/nodes/src/nodesUtilFuncs.c @@ -473,6 +473,8 @@ SNode* nodesMakeNode(ENodeType type) { return makeNode(type, sizeof(SBalanceVgroupStmt)); case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: return makeNode(type, sizeof(SBalanceVgroupLeaderStmt)); + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + return makeNode(type, sizeof(SBalanceVgroupLeaderStmt)); case QUERY_NODE_MERGE_VGROUP_STMT: return makeNode(type, sizeof(SMergeVgroupStmt)); case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: @@ -1161,6 +1163,7 @@ void nodesDestroyNode(SNode* pNode) { case QUERY_NODE_RESUME_STREAM_STMT: // no pointer field case QUERY_NODE_BALANCE_VGROUP_STMT: // no pointer field case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: // no pointer field + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: // no pointer field case QUERY_NODE_MERGE_VGROUP_STMT: // no pointer field break; case QUERY_NODE_REDISTRIBUTE_VGROUP_STMT: diff --git a/source/libs/parser/inc/parAst.h b/source/libs/parser/inc/parAst.h index dac9599fa4..e8596c4d19 100644 --- a/source/libs/parser/inc/parAst.h +++ b/source/libs/parser/inc/parAst.h @@ -274,6 +274,7 @@ SNode* createKillStmt(SAstCreateContext* pCxt, ENodeType type, const SToken* pId SNode* createKillQueryStmt(SAstCreateContext* pCxt, const SToken* pQueryId); SNode* createBalanceVgroupStmt(SAstCreateContext* pCxt); SNode* createBalanceVgroupLeaderStmt(SAstCreateContext* pCxt, const SToken* pVgId); +SNode* createBalanceVgroupLeaderDBNameStmt(SAstCreateContext* pCxt, const SToken* pDbName); SNode* createMergeVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId1, const SToken* pVgId2); SNode* createRedistributeVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId, SNodeList* pDnodes); SNode* createSplitVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId); diff --git a/source/libs/parser/inc/sql.y b/source/libs/parser/inc/sql.y index 7ffc898529..60e33c6f33 100644 --- a/source/libs/parser/inc/sql.y +++ b/source/libs/parser/inc/sql.y @@ -773,6 +773,7 @@ cmd ::= KILL COMPACT NK_INTEGER(A). /************************************************ merge/redistribute/ vgroup ******************************************/ cmd ::= BALANCE VGROUP. { pCxt->pRootNode = createBalanceVgroupStmt(pCxt); } cmd ::= BALANCE VGROUP LEADER on_vgroup_id(A). { pCxt->pRootNode = createBalanceVgroupLeaderStmt(pCxt, &A); } +cmd ::= BALANCE VGROUP LEADER DATABASE db_name(A). { pCxt->pRootNode = createBalanceVgroupLeaderDBNameStmt(pCxt, &A); } cmd ::= MERGE VGROUP NK_INTEGER(A) NK_INTEGER(B). { pCxt->pRootNode = createMergeVgroupStmt(pCxt, &A, &B); } cmd ::= REDISTRIBUTE VGROUP NK_INTEGER(A) dnode_list(B). { pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &A, B); } cmd ::= SPLIT VGROUP NK_INTEGER(A). { pCxt->pRootNode = createSplitVgroupStmt(pCxt, &A); } diff --git a/source/libs/parser/src/parAstCreater.c b/source/libs/parser/src/parAstCreater.c index fa03780a6d..9ae9dfffd7 100644 --- a/source/libs/parser/src/parAstCreater.c +++ b/source/libs/parser/src/parAstCreater.c @@ -2809,6 +2809,16 @@ SNode* createBalanceVgroupLeaderStmt(SAstCreateContext* pCxt, const SToken* pVgI return (SNode*)pStmt; } +SNode* createBalanceVgroupLeaderDBNameStmt(SAstCreateContext* pCxt, const SToken* pDbName){ + CHECK_PARSER_STATUS(pCxt); + SBalanceVgroupLeaderStmt* pStmt = (SBalanceVgroupLeaderStmt*)nodesMakeNode(QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT); + CHECK_OUT_OF_MEM(pStmt); + if (NULL != pDbName) { + COPY_STRING_FORM_ID_TOKEN(pStmt->dbName, pDbName); + } + return (SNode*)pStmt; +} + SNode* createMergeVgroupStmt(SAstCreateContext* pCxt, const SToken* pVgId1, const SToken* pVgId2) { CHECK_PARSER_STATUS(pCxt); SMergeVgroupStmt* pStmt = (SMergeVgroupStmt*)nodesMakeNode(QUERY_NODE_MERGE_VGROUP_STMT); diff --git a/source/libs/parser/src/parAstParser.c b/source/libs/parser/src/parAstParser.c index ef9252e337..122118b71c 100644 --- a/source/libs/parser/src/parAstParser.c +++ b/source/libs/parser/src/parAstParser.c @@ -42,7 +42,6 @@ int32_t buildQueryAfterParse(SQuery** pQuery, SNode* pRootNode, int16_t placehol return TSDB_CODE_SUCCESS; } - int32_t parse(SParseContext* pParseCxt, SQuery** pQuery) { SAstCreateContext cxt; initAstCreateContext(pParseCxt, &cxt); @@ -635,8 +634,8 @@ static int32_t collectMetaKeyFromShowCompacts(SCollectMetaKeyCxt* pCxt, SShowStm } static int32_t collectMetaKeyFromShowCompactDetails(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { - int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, TSDB_INS_TABLE_COMPACT_DETAILS, - pCxt->pMetaCache); + int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_INFORMATION_SCHEMA_DB, + TSDB_INS_TABLE_COMPACT_DETAILS, pCxt->pMetaCache); return code; } @@ -691,7 +690,7 @@ static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowC int32_t code = catalogRemoveViewMeta(pCxt->pParseCxt->pCatalog, dbFName, 0, pStmt->viewName, 0); if (TSDB_CODE_SUCCESS == code) { code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, - AUTH_TYPE_READ, pCxt->pMetaCache); + AUTH_TYPE_READ, pCxt->pMetaCache); } if (TSDB_CODE_SUCCESS == code) { code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); @@ -700,7 +699,6 @@ static int32_t collectMetaKeyFromShowCreateView(SCollectMetaKeyCxt* pCxt, SShowC return code; } - static int32_t collectMetaKeyFromShowApps(SCollectMetaKeyCxt* pCxt, SShowStmt* pStmt) { return reserveTableMetaInCache(pCxt->pParseCxt->acctId, TSDB_PERFORMANCE_SCHEMA_DB, TSDB_PERFS_TABLE_APPS, pCxt->pMetaCache); @@ -759,24 +757,22 @@ static int32_t collectMetaKeyFromRevoke(SCollectMetaKeyCxt* pCxt, SRevokeStmt* p return reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->objName, pStmt->tabName, pCxt->pMetaCache); } - static int32_t collectMetaKeyFromCreateViewStmt(SCollectMetaKeyCxt* pCxt, SCreateViewStmt* pStmt) { - int32_t code = - reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); + int32_t code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->viewName, pCxt->pMetaCache); if (TSDB_CODE_SUCCESS == code) { code = reserveUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, NULL, AUTH_TYPE_WRITE, pCxt->pMetaCache); } if (TSDB_CODE_SUCCESS == code) { - code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, AUTH_TYPE_ALTER, - pCxt->pMetaCache); + code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, + AUTH_TYPE_ALTER, pCxt->pMetaCache); } return code; } static int32_t collectMetaKeyFromDropViewStmt(SCollectMetaKeyCxt* pCxt, SDropViewStmt* pStmt) { - int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, pStmt->viewName, AUTH_TYPE_ALTER, - pCxt->pMetaCache); + int32_t code = reserveViewUserAuthInCache(pCxt->pParseCxt->acctId, pCxt->pParseCxt->pUser, pStmt->dbName, + pStmt->viewName, AUTH_TYPE_ALTER, pCxt->pMetaCache); return code; } @@ -787,7 +783,7 @@ static int32_t collectMetaKeyFromCreateTSMAStmt(SCollectMetaKeyCxt* pCxt, SCreat code = reserveTSMAInfoInCache(pCxt->pParseCxt->acctId, pStmt->dbName, pStmt->tableName, pCxt->pMetaCache); if (TSDB_CODE_SUCCESS == code) { char dstTbName[TSDB_TABLE_NAME_LEN] = {0}; - snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s"TSMA_RES_STB_POSTFIX, pStmt->tableName); + snprintf(dstTbName, TSDB_TABLE_NAME_LEN, "%s" TSMA_RES_STB_POSTFIX, pStmt->tableName); code = reserveTableMetaInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache); if (TSDB_CODE_SUCCESS == code) { code = reserveTableVgroupInCache(pCxt->pParseCxt->acctId, pStmt->dbName, dstTbName, pCxt->pMetaCache); @@ -925,7 +921,7 @@ static int32_t collectMetaKeyFromQuery(SCollectMetaKeyCxt* pCxt, SNode* pStmt) { case QUERY_NODE_SHOW_COMPACTS_STMT: return collectMetaKeyFromShowCompacts(pCxt, (SShowStmt*)pStmt); case QUERY_NODE_SHOW_COMPACT_DETAILS_STMT: - return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt); + return collectMetaKeyFromShowCompactDetails(pCxt, (SShowStmt*)pStmt); case QUERY_NODE_SHOW_GRANTS_FULL_STMT: return collectMetaKeyFromShowGrantsFull(pCxt, (SShowStmt*)pStmt); case QUERY_NODE_SHOW_GRANTS_LOGS_STMT: diff --git a/source/libs/parser/src/parTranslater.c b/source/libs/parser/src/parTranslater.c index 68e207e64e..79b37c2950 100644 --- a/source/libs/parser/src/parTranslater.c +++ b/source/libs/parser/src/parTranslater.c @@ -4338,7 +4338,7 @@ int32_t translateTable(STranslateContext* pCxt, SNode** pTable, SNode* pJoinPare return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_GET_META_ERROR, tstrerror(code)); } #ifdef TD_ENTERPRISE - if (TSDB_VIEW_TABLE == pRealTable->pMeta->tableType) { + if (TSDB_VIEW_TABLE == pRealTable->pMeta->tableType && !pCurrSmt->tagScan) { return translateView(pCxt, pTable, &name); } translateAudit(pCxt, pRealTable, &name); @@ -10578,6 +10578,7 @@ static int32_t translateBalanceVgroup(STranslateContext* pCxt, SBalanceVgroupStm static int32_t translateBalanceVgroupLeader(STranslateContext* pCxt, SBalanceVgroupLeaderStmt* pStmt) { SBalanceVgroupLeaderReq req = {0}; req.vgId = pStmt->vgId; + if(pStmt->dbName != NULL) strcpy(req.db, pStmt->dbName); int32_t code = buildCmdMsg(pCxt, TDMT_MND_BALANCE_VGROUP_LEADER, (FSerializeFunc)tSerializeSBalanceVgroupLeaderReq, &req); tFreeSBalanceVgroupLeaderReq(&req); @@ -11263,6 +11264,9 @@ static int32_t translateQuery(STranslateContext* pCxt, SNode* pNode) { case QUERY_NODE_BALANCE_VGROUP_LEADER_STMT: code = translateBalanceVgroupLeader(pCxt, (SBalanceVgroupLeaderStmt*)pNode); break; + case QUERY_NODE_BALANCE_VGROUP_LEADER_DATABASE_STMT: + code = translateBalanceVgroupLeader(pCxt, (SBalanceVgroupLeaderStmt*)pNode); + break; case QUERY_NODE_MERGE_VGROUP_STMT: code = translateMergeVgroup(pCxt, (SMergeVgroupStmt*)pNode); break; @@ -11875,11 +11879,18 @@ static int32_t checkShowTags(STranslateContext* pCxt, const SShowStmt* pShow) { toName(pCxt->pParseCxt->acctId, ((SValueNode*)pShow->pDbName)->literal, ((SValueNode*)pShow->pTbName)->literal, &name), &pTableMeta, true); - taosMemoryFreeClear(pTableMeta); if (TSDB_CODE_SUCCESS != code) { - return generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_GET_META_ERROR, tstrerror(code)); + code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_GET_META_ERROR, tstrerror(code)); + goto _exit; + } + if (TSDB_SUPER_TABLE != pTableMeta->tableType && TSDB_CHILD_TABLE != pTableMeta->tableType) { + code = generateSyntaxErrMsg(&pCxt->msgBuf, TSDB_CODE_PAR_INVALID_TAGS_PC, + "The _TAGS pseudo column can only be used for child table and super table queries"); + goto _exit; } +_exit: + taosMemoryFreeClear(pTableMeta); return code; } diff --git a/source/libs/parser/src/sql.c b/source/libs/parser/src/sql.c index 2bbc9e95de..52dd135cd3 100644 --- a/source/libs/parser/src/sql.c +++ b/source/libs/parser/src/sql.c @@ -1,3 +1,5 @@ +/* This file is automatically generated by Lemon from input grammar +** source file "sql.y". */ /* ** 2000-05-29 ** @@ -22,10 +24,7 @@ ** The following is the concatenation of all %include directives from the ** input grammar file: */ -#include -#include /************ Begin %include sections from the grammar ************************/ - #include #include #include @@ -42,11 +41,386 @@ #define YYSTACKDEPTH 0 /**************** End of %include directives **********************************/ -/* These constants specify the various numeric values for terminal symbols -** in a format understandable to "makeheaders". This section is blank unless -** "lemon" is run with the "-m" command-line option. -***************** Begin makeheaders token definitions *************************/ -/**************** End makeheaders token definitions ***************************/ +/* These constants specify the various numeric values for terminal symbols. +***************** Begin token definitions *************************************/ +#ifndef TK_OR +#define TK_OR 1 +#define TK_AND 2 +#define TK_UNION 3 +#define TK_ALL 4 +#define TK_MINUS 5 +#define TK_EXCEPT 6 +#define TK_INTERSECT 7 +#define TK_NK_BITAND 8 +#define TK_NK_BITOR 9 +#define TK_NK_LSHIFT 10 +#define TK_NK_RSHIFT 11 +#define TK_NK_PLUS 12 +#define TK_NK_MINUS 13 +#define TK_NK_STAR 14 +#define TK_NK_SLASH 15 +#define TK_NK_REM 16 +#define TK_NK_CONCAT 17 +#define TK_CREATE 18 +#define TK_ACCOUNT 19 +#define TK_NK_ID 20 +#define TK_PASS 21 +#define TK_NK_STRING 22 +#define TK_ALTER 23 +#define TK_PPS 24 +#define TK_TSERIES 25 +#define TK_STORAGE 26 +#define TK_STREAMS 27 +#define TK_QTIME 28 +#define TK_DBS 29 +#define TK_USERS 30 +#define TK_CONNS 31 +#define TK_STATE 32 +#define TK_NK_COMMA 33 +#define TK_HOST 34 +#define TK_USER 35 +#define TK_ENABLE 36 +#define TK_NK_INTEGER 37 +#define TK_SYSINFO 38 +#define TK_ADD 39 +#define TK_DROP 40 +#define TK_GRANT 41 +#define TK_ON 42 +#define TK_TO 43 +#define TK_REVOKE 44 +#define TK_FROM 45 +#define TK_SUBSCRIBE 46 +#define TK_READ 47 +#define TK_WRITE 48 +#define TK_NK_DOT 49 +#define TK_WITH 50 +#define TK_ENCRYPT_KEY 51 +#define TK_DNODE 52 +#define TK_PORT 53 +#define TK_DNODES 54 +#define TK_RESTORE 55 +#define TK_NK_IPTOKEN 56 +#define TK_FORCE 57 +#define TK_UNSAFE 58 +#define TK_CLUSTER 59 +#define TK_LOCAL 60 +#define TK_QNODE 61 +#define TK_BNODE 62 +#define TK_SNODE 63 +#define TK_MNODE 64 +#define TK_VNODE 65 +#define TK_DATABASE 66 +#define TK_USE 67 +#define TK_FLUSH 68 +#define TK_TRIM 69 +#define TK_S3MIGRATE 70 +#define TK_COMPACT 71 +#define TK_IF 72 +#define TK_NOT 73 +#define TK_EXISTS 74 +#define TK_BUFFER 75 +#define TK_CACHEMODEL 76 +#define TK_CACHESIZE 77 +#define TK_COMP 78 +#define TK_DURATION 79 +#define TK_NK_VARIABLE 80 +#define TK_MAXROWS 81 +#define TK_MINROWS 82 +#define TK_KEEP 83 +#define TK_PAGES 84 +#define TK_PAGESIZE 85 +#define TK_TSDB_PAGESIZE 86 +#define TK_PRECISION 87 +#define TK_REPLICA 88 +#define TK_VGROUPS 89 +#define TK_SINGLE_STABLE 90 +#define TK_RETENTIONS 91 +#define TK_SCHEMALESS 92 +#define TK_WAL_LEVEL 93 +#define TK_WAL_FSYNC_PERIOD 94 +#define TK_WAL_RETENTION_PERIOD 95 +#define TK_WAL_RETENTION_SIZE 96 +#define TK_WAL_ROLL_PERIOD 97 +#define TK_WAL_SEGMENT_SIZE 98 +#define TK_STT_TRIGGER 99 +#define TK_TABLE_PREFIX 100 +#define TK_TABLE_SUFFIX 101 +#define TK_S3_CHUNKSIZE 102 +#define TK_S3_KEEPLOCAL 103 +#define TK_S3_COMPACT 104 +#define TK_KEEP_TIME_OFFSET 105 +#define TK_ENCRYPT_ALGORITHM 106 +#define TK_NK_COLON 107 +#define TK_BWLIMIT 108 +#define TK_START 109 +#define TK_TIMESTAMP 110 +#define TK_END 111 +#define TK_TABLE 112 +#define TK_NK_LP 113 +#define TK_NK_RP 114 +#define TK_STABLE 115 +#define TK_COLUMN 116 +#define TK_MODIFY 117 +#define TK_RENAME 118 +#define TK_TAG 119 +#define TK_SET 120 +#define TK_NK_EQ 121 +#define TK_USING 122 +#define TK_TAGS 123 +#define TK_BOOL 124 +#define TK_TINYINT 125 +#define TK_SMALLINT 126 +#define TK_INT 127 +#define TK_INTEGER 128 +#define TK_BIGINT 129 +#define TK_FLOAT 130 +#define TK_DOUBLE 131 +#define TK_BINARY 132 +#define TK_NCHAR 133 +#define TK_UNSIGNED 134 +#define TK_JSON 135 +#define TK_VARCHAR 136 +#define TK_MEDIUMBLOB 137 +#define TK_BLOB 138 +#define TK_VARBINARY 139 +#define TK_GEOMETRY 140 +#define TK_DECIMAL 141 +#define TK_COMMENT 142 +#define TK_MAX_DELAY 143 +#define TK_WATERMARK 144 +#define TK_ROLLUP 145 +#define TK_TTL 146 +#define TK_SMA 147 +#define TK_DELETE_MARK 148 +#define TK_FIRST 149 +#define TK_LAST 150 +#define TK_SHOW 151 +#define TK_PRIVILEGES 152 +#define TK_DATABASES 153 +#define TK_TABLES 154 +#define TK_STABLES 155 +#define TK_MNODES 156 +#define TK_QNODES 157 +#define TK_ARBGROUPS 158 +#define TK_FUNCTIONS 159 +#define TK_INDEXES 160 +#define TK_ACCOUNTS 161 +#define TK_APPS 162 +#define TK_CONNECTIONS 163 +#define TK_LICENCES 164 +#define TK_GRANTS 165 +#define TK_FULL 166 +#define TK_LOGS 167 +#define TK_MACHINES 168 +#define TK_ENCRYPTIONS 169 +#define TK_QUERIES 170 +#define TK_SCORES 171 +#define TK_TOPICS 172 +#define TK_VARIABLES 173 +#define TK_BNODES 174 +#define TK_SNODES 175 +#define TK_TRANSACTIONS 176 +#define TK_DISTRIBUTED 177 +#define TK_CONSUMERS 178 +#define TK_SUBSCRIPTIONS 179 +#define TK_VNODES 180 +#define TK_ALIVE 181 +#define TK_VIEWS 182 +#define TK_VIEW 183 +#define TK_COMPACTS 184 +#define TK_NORMAL 185 +#define TK_CHILD 186 +#define TK_LIKE 187 +#define TK_TBNAME 188 +#define TK_QTAGS 189 +#define TK_AS 190 +#define TK_SYSTEM 191 +#define TK_TSMA 192 +#define TK_INTERVAL 193 +#define TK_RECURSIVE 194 +#define TK_TSMAS 195 +#define TK_FUNCTION 196 +#define TK_INDEX 197 +#define TK_COUNT 198 +#define TK_LAST_ROW 199 +#define TK_META 200 +#define TK_ONLY 201 +#define TK_TOPIC 202 +#define TK_CONSUMER 203 +#define TK_GROUP 204 +#define TK_DESC 205 +#define TK_DESCRIBE 206 +#define TK_RESET 207 +#define TK_QUERY 208 +#define TK_CACHE 209 +#define TK_EXPLAIN 210 +#define TK_ANALYZE 211 +#define TK_VERBOSE 212 +#define TK_NK_BOOL 213 +#define TK_RATIO 214 +#define TK_NK_FLOAT 215 +#define TK_OUTPUTTYPE 216 +#define TK_AGGREGATE 217 +#define TK_BUFSIZE 218 +#define TK_LANGUAGE 219 +#define TK_REPLACE 220 +#define TK_STREAM 221 +#define TK_INTO 222 +#define TK_PAUSE 223 +#define TK_RESUME 224 +#define TK_PRIMARY 225 +#define TK_KEY 226 +#define TK_TRIGGER 227 +#define TK_AT_ONCE 228 +#define TK_WINDOW_CLOSE 229 +#define TK_IGNORE 230 +#define TK_EXPIRED 231 +#define TK_FILL_HISTORY 232 +#define TK_UPDATE 233 +#define TK_SUBTABLE 234 +#define TK_UNTREATED 235 +#define TK_KILL 236 +#define TK_CONNECTION 237 +#define TK_TRANSACTION 238 +#define TK_BALANCE 239 +#define TK_VGROUP 240 +#define TK_LEADER 241 +#define TK_MERGE 242 +#define TK_REDISTRIBUTE 243 +#define TK_SPLIT 244 +#define TK_DELETE 245 +#define TK_INSERT 246 +#define TK_NK_BIN 247 +#define TK_NK_HEX 248 +#define TK_NULL 249 +#define TK_NK_QUESTION 250 +#define TK_NK_ALIAS 251 +#define TK_NK_ARROW 252 +#define TK_ROWTS 253 +#define TK_QSTART 254 +#define TK_QEND 255 +#define TK_QDURATION 256 +#define TK_WSTART 257 +#define TK_WEND 258 +#define TK_WDURATION 259 +#define TK_IROWTS 260 +#define TK_ISFILLED 261 +#define TK_CAST 262 +#define TK_NOW 263 +#define TK_TODAY 264 +#define TK_TIMEZONE 265 +#define TK_CLIENT_VERSION 266 +#define TK_SERVER_VERSION 267 +#define TK_SERVER_STATUS 268 +#define TK_CURRENT_USER 269 +#define TK_CASE 270 +#define TK_WHEN 271 +#define TK_THEN 272 +#define TK_ELSE 273 +#define TK_BETWEEN 274 +#define TK_IS 275 +#define TK_NK_LT 276 +#define TK_NK_GT 277 +#define TK_NK_LE 278 +#define TK_NK_GE 279 +#define TK_NK_NE 280 +#define TK_MATCH 281 +#define TK_NMATCH 282 +#define TK_CONTAINS 283 +#define TK_IN 284 +#define TK_JOIN 285 +#define TK_INNER 286 +#define TK_LEFT 287 +#define TK_RIGHT 288 +#define TK_OUTER 289 +#define TK_SEMI 290 +#define TK_ANTI 291 +#define TK_ASOF 292 +#define TK_WINDOW 293 +#define TK_WINDOW_OFFSET 294 +#define TK_JLIMIT 295 +#define TK_SELECT 296 +#define TK_NK_HINT 297 +#define TK_DISTINCT 298 +#define TK_WHERE 299 +#define TK_PARTITION 300 +#define TK_BY 301 +#define TK_SESSION 302 +#define TK_STATE_WINDOW 303 +#define TK_EVENT_WINDOW 304 +#define TK_COUNT_WINDOW 305 +#define TK_SLIDING 306 +#define TK_FILL 307 +#define TK_VALUE 308 +#define TK_VALUE_F 309 +#define TK_NONE 310 +#define TK_PREV 311 +#define TK_NULL_F 312 +#define TK_LINEAR 313 +#define TK_NEXT 314 +#define TK_HAVING 315 +#define TK_RANGE 316 +#define TK_EVERY 317 +#define TK_ORDER 318 +#define TK_SLIMIT 319 +#define TK_SOFFSET 320 +#define TK_LIMIT 321 +#define TK_OFFSET 322 +#define TK_ASC 323 +#define TK_NULLS 324 +#define TK_ABORT 325 +#define TK_AFTER 326 +#define TK_ATTACH 327 +#define TK_BEFORE 328 +#define TK_BEGIN 329 +#define TK_BITAND 330 +#define TK_BITNOT 331 +#define TK_BITOR 332 +#define TK_BLOCKS 333 +#define TK_CHANGE 334 +#define TK_COMMA 335 +#define TK_CONCAT 336 +#define TK_CONFLICT 337 +#define TK_COPY 338 +#define TK_DEFERRED 339 +#define TK_DELIMITERS 340 +#define TK_DETACH 341 +#define TK_DIVIDE 342 +#define TK_DOT 343 +#define TK_EACH 344 +#define TK_FAIL 345 +#define TK_FILE 346 +#define TK_FOR 347 +#define TK_GLOB 348 +#define TK_ID 349 +#define TK_IMMEDIATE 350 +#define TK_IMPORT 351 +#define TK_INITIALLY 352 +#define TK_INSTEAD 353 +#define TK_ISNULL 354 +#define TK_MODULES 355 +#define TK_NK_BITNOT 356 +#define TK_NK_SEMI 357 +#define TK_NOTNULL 358 +#define TK_OF 359 +#define TK_PLUS 360 +#define TK_PRIVILEGE 361 +#define TK_RAISE 362 +#define TK_RESTRICT 363 +#define TK_ROW 364 +#define TK_STAR 365 +#define TK_STATEMENT 366 +#define TK_STRICT 367 +#define TK_STRING 368 +#define TK_TIMES 369 +#define TK_VALUES 370 +#define TK_VARIABLE 371 +#define TK_WAL 372 +#define TK_ENCODE 373 +#define TK_COMPRESS 374 +#define TK_LEVEL 375 +#endif +/**************** End token definitions ***************************************/ /* The next sections is a series of control #defines. ** various aspects of the generated parser. @@ -143,18 +517,18 @@ typedef union { #define ParseCTX_FETCH #define ParseCTX_STORE #define YYFALLBACK 1 -#define YYNSTATE 961 -#define YYNRULE 747 -#define YYNRULE_WITH_ACTION 747 +#define YYNSTATE 963 +#define YYNRULE 748 +#define YYNRULE_WITH_ACTION 748 #define YYNTOKEN 376 -#define YY_MAX_SHIFT 960 -#define YY_MIN_SHIFTREDUCE 1429 -#define YY_MAX_SHIFTREDUCE 2175 -#define YY_ERROR_ACTION 2176 -#define YY_ACCEPT_ACTION 2177 -#define YY_NO_ACTION 2178 -#define YY_MIN_REDUCE 2179 -#define YY_MAX_REDUCE 2925 +#define YY_MAX_SHIFT 962 +#define YY_MIN_SHIFTREDUCE 1431 +#define YY_MAX_SHIFTREDUCE 2178 +#define YY_ERROR_ACTION 2179 +#define YY_ACCEPT_ACTION 2180 +#define YY_NO_ACTION 2181 +#define YY_MIN_REDUCE 2182 +#define YY_MAX_REDUCE 2929 /************* End control #defines *******************************************/ #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) @@ -223,329 +597,329 @@ typedef union { *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (3228) static const YYACTIONTYPE yy_action[] = { - /* 0 */ 37, 337, 2535, 2701, 637, 540, 2370, 638, 2222, 190, - /* 10 */ 2676, 314, 47, 45, 2092, 2808, 801, 463, 493, 492, - /* 20 */ 468, 2180, 1913, 2532, 843, 40, 39, 2701, 66, 46, - /* 30 */ 44, 43, 42, 41, 1938, 2001, 1938, 1911, 2680, 2477, - /* 40 */ 836, 2805, 136, 1920, 2719, 135, 134, 133, 132, 131, - /* 50 */ 130, 129, 128, 127, 602, 600, 829, 408, 852, 371, - /* 60 */ 2666, 229, 838, 2365, 416, 33, 1996, 828, 2719, 798, - /* 70 */ 155, 40, 39, 19, 300, 46, 44, 43, 42, 41, - /* 80 */ 1919, 2266, 798, 155, 2666, 209, 838, 722, 136, 2682, - /* 90 */ 2685, 135, 134, 133, 132, 131, 130, 129, 128, 127, - /* 100 */ 857, 2428, 720, 251, 718, 285, 284, 640, 2700, 2230, - /* 110 */ 957, 2739, 2808, 15, 1939, 119, 2702, 842, 2704, 2705, - /* 120 */ 837, 645, 857, 103, 638, 2222, 197, 199, 852, 2793, - /* 130 */ 642, 2136, 2700, 464, 2789, 2739, 639, 62, 2804, 404, - /* 140 */ 2702, 842, 2704, 2705, 837, 835, 857, 821, 2758, 2003, - /* 150 */ 2004, 50, 436, 217, 2508, 751, 930, 929, 928, 927, - /* 160 */ 496, 2840, 926, 925, 160, 920, 919, 918, 917, 916, - /* 170 */ 915, 914, 159, 908, 907, 906, 495, 494, 903, 902, - /* 180 */ 901, 196, 195, 900, 491, 899, 898, 897, 1974, 1984, - /* 190 */ 800, 185, 2801, 2802, 776, 153, 2806, 289, 2002, 2005, - /* 200 */ 798, 155, 1760, 1761, 192, 2801, 797, 577, 147, 796, - /* 210 */ 786, 2659, 576, 1914, 484, 1912, 2891, 9, 2891, 2096, - /* 220 */ 575, 1923, 40, 39, 735, 1938, 46, 44, 43, 42, - /* 230 */ 41, 2357, 2701, 2202, 785, 216, 785, 216, 122, 2892, - /* 240 */ 787, 2892, 787, 1687, 1688, 839, 2385, 486, 2383, 1917, - /* 250 */ 1918, 1971, 775, 1973, 1976, 1977, 1978, 1979, 1980, 1981, - /* 260 */ 1982, 1983, 834, 855, 854, 1995, 1997, 1998, 1999, 2000, - /* 270 */ 2, 47, 45, 2719, 913, 473, 413, 2341, 1936, 468, - /* 280 */ 2719, 1913, 1841, 1842, 2896, 584, 857, 428, 605, 2666, - /* 290 */ 2666, 838, 2891, 604, 2001, 60, 1911, 40, 39, 452, - /* 300 */ 2582, 46, 44, 43, 42, 41, 749, 2011, 732, 1942, - /* 310 */ 563, 2895, 606, 1938, 197, 2892, 2894, 414, 565, 1496, - /* 320 */ 321, 1495, 125, 2801, 2802, 1996, 153, 2806, 180, 543, - /* 330 */ 853, 2381, 19, 660, 321, 2030, 151, 2700, 2384, 1919, - /* 340 */ 2739, 2067, 2509, 771, 119, 2702, 842, 2704, 2705, 837, - /* 350 */ 220, 857, 1469, 774, 157, 1497, 166, 2764, 2793, 2179, - /* 360 */ 40, 39, 464, 2789, 46, 44, 43, 42, 41, 957, - /* 370 */ 437, 1476, 15, 894, 172, 171, 891, 890, 889, 169, - /* 380 */ 1942, 551, 1938, 145, 144, 143, 142, 141, 140, 139, - /* 390 */ 138, 137, 653, 1975, 1471, 1474, 1475, 533, 62, 40, - /* 400 */ 39, 2031, 532, 46, 44, 43, 42, 41, 2003, 2004, - /* 410 */ 657, 2515, 2494, 656, 592, 591, 590, 589, 588, 583, - /* 420 */ 582, 581, 580, 420, 29, 1971, 2067, 570, 569, 568, - /* 430 */ 567, 566, 560, 559, 558, 253, 553, 552, 435, 640, - /* 440 */ 852, 2230, 544, 1748, 1749, 328, 329, 1974, 1984, 1767, - /* 450 */ 327, 752, 777, 772, 765, 761, 1972, 2002, 2005, 2891, - /* 460 */ 2813, 2064, 2065, 2066, 2813, 2813, 2813, 2813, 2813, 2522, - /* 470 */ 2372, 658, 1914, 517, 1912, 62, 896, 2897, 216, 212, - /* 480 */ 736, 1975, 2892, 787, 853, 2381, 853, 2381, 36, 466, - /* 490 */ 2025, 2026, 2027, 2028, 2029, 2033, 2034, 2035, 2036, 2069, - /* 500 */ 2070, 2071, 2072, 2073, 146, 2137, 55, 375, 1917, 1918, - /* 510 */ 1971, 683, 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, - /* 520 */ 1983, 834, 855, 854, 1995, 1997, 1998, 1999, 2000, 2, - /* 530 */ 12, 47, 45, 50, 473, 1922, 2701, 2535, 181, 468, - /* 540 */ 1943, 1913, 116, 388, 1972, 857, 2064, 2065, 2066, 801, - /* 550 */ 207, 113, 470, 596, 2001, 1587, 1911, 2167, 2532, 843, - /* 560 */ 386, 76, 647, 2574, 75, 2701, 40, 39, 451, 2582, - /* 570 */ 46, 44, 43, 42, 41, 415, 733, 2719, 839, 2067, - /* 580 */ 2232, 321, 1939, 1919, 2676, 1996, 2896, 249, 619, 617, - /* 590 */ 614, 612, 19, 2666, 2891, 838, 40, 39, 1589, 1919, - /* 600 */ 46, 44, 43, 42, 41, 2487, 2719, 704, 703, 702, - /* 610 */ 521, 1943, 2680, 2895, 694, 152, 698, 2892, 2893, 240, - /* 620 */ 697, 2535, 2666, 654, 838, 696, 701, 445, 444, 957, - /* 630 */ 910, 695, 15, 62, 98, 443, 691, 690, 689, 523, - /* 640 */ 519, 2700, 2533, 843, 2739, 595, 239, 547, 119, 2702, - /* 650 */ 842, 2704, 2705, 837, 793, 857, 853, 2381, 321, 593, - /* 660 */ 199, 2377, 2793, 2682, 2684, 465, 464, 2789, 2003, 2004, - /* 670 */ 2700, 63, 2108, 2739, 857, 2166, 146, 119, 2702, 842, - /* 680 */ 2704, 2705, 837, 688, 857, 12, 2125, 655, 2528, 2911, - /* 690 */ 183, 2793, 2191, 51, 2841, 464, 2789, 912, 2813, 2064, - /* 700 */ 2065, 2066, 2813, 2813, 2813, 2813, 2813, 1974, 1984, 35, - /* 710 */ 1941, 1787, 1788, 1925, 2177, 40, 39, 2002, 2005, 46, - /* 720 */ 44, 43, 42, 41, 2355, 86, 85, 536, 2435, 2436, - /* 730 */ 228, 2089, 1914, 2441, 1912, 46, 44, 43, 42, 41, - /* 740 */ 98, 434, 2619, 528, 526, 768, 767, 2123, 2124, 2126, - /* 750 */ 2127, 2128, 2439, 12, 288, 10, 412, 438, 287, 515, - /* 760 */ 1786, 1789, 512, 508, 504, 501, 529, 2376, 1917, 1918, - /* 770 */ 1971, 1582, 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, - /* 780 */ 1983, 834, 855, 854, 1995, 1997, 1998, 1999, 2000, 2, - /* 790 */ 47, 45, 2006, 1496, 2701, 1495, 752, 479, 468, 235, - /* 800 */ 1913, 499, 180, 863, 2891, 887, 498, 839, 2896, 2848, - /* 810 */ 2660, 486, 2383, 2001, 1583, 1911, 321, 488, 2701, 78, - /* 820 */ 2434, 2436, 2897, 216, 1599, 1941, 2808, 2892, 787, 1497, - /* 830 */ 786, 839, 101, 2861, 634, 2719, 1938, 423, 2891, 1598, - /* 840 */ 450, 2441, 724, 632, 1996, 92, 628, 624, 91, 461, - /* 850 */ 210, 2666, 2803, 838, 827, 752, 785, 216, 1919, 2719, - /* 860 */ 2439, 2892, 787, 2891, 853, 2381, 894, 172, 171, 891, - /* 870 */ 890, 889, 169, 89, 473, 2666, 321, 838, 442, 441, - /* 880 */ 319, 2897, 216, 482, 537, 857, 2892, 787, 957, 2460, - /* 890 */ 2368, 48, 894, 172, 171, 891, 890, 889, 169, 2700, - /* 900 */ 1499, 1500, 2739, 3, 2701, 736, 119, 2702, 842, 2704, - /* 910 */ 2705, 837, 607, 857, 1913, 53, 90, 839, 2911, 2160, - /* 920 */ 2793, 853, 2381, 2700, 464, 2789, 2739, 2003, 2004, 1911, - /* 930 */ 119, 2702, 842, 2704, 2705, 837, 822, 857, 2765, 549, - /* 940 */ 2504, 538, 2911, 794, 2793, 2719, 555, 2504, 464, 2789, - /* 950 */ 471, 862, 861, 860, 853, 2381, 440, 439, 179, 685, - /* 960 */ 2441, 2666, 824, 838, 2765, 2701, 1974, 1984, 472, 2386, - /* 970 */ 853, 2381, 1919, 1476, 659, 1882, 2002, 2005, 839, 2439, - /* 980 */ 763, 687, 2363, 853, 2381, 686, 2441, 738, 2574, 296, - /* 990 */ 557, 1914, 231, 1912, 487, 319, 2117, 1474, 1475, 233, - /* 1000 */ 586, 2504, 957, 571, 1975, 2439, 2719, 478, 477, 2700, - /* 1010 */ 62, 2118, 2739, 1942, 679, 678, 187, 2702, 842, 2704, - /* 1020 */ 2705, 837, 2666, 857, 838, 2088, 2201, 1917, 1918, 1971, - /* 1030 */ 2022, 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, - /* 1040 */ 834, 855, 854, 1995, 1997, 1998, 1999, 2000, 2, 47, - /* 1050 */ 45, 2701, 489, 238, 2116, 579, 578, 468, 381, 1913, - /* 1060 */ 179, 1881, 681, 680, 839, 102, 2884, 1972, 853, 2381, - /* 1070 */ 2700, 2386, 2001, 2739, 1911, 788, 2912, 119, 2702, 842, - /* 1080 */ 2704, 2705, 837, 2666, 857, 700, 699, 2701, 572, 2911, - /* 1090 */ 182, 2793, 2719, 481, 480, 464, 2789, 1603, 2315, 1815, - /* 1100 */ 839, 2200, 2825, 1996, 1648, 1914, 2385, 1912, 2666, 531, - /* 1110 */ 838, 530, 1602, 111, 14, 13, 2199, 1919, 1639, 886, - /* 1120 */ 885, 884, 1643, 883, 1645, 1646, 882, 879, 2719, 1654, - /* 1130 */ 876, 1656, 1657, 873, 870, 867, 2192, 853, 2381, 2374, - /* 1140 */ 2316, 1917, 1918, 529, 2666, 117, 838, 957, 2701, 2895, - /* 1150 */ 48, 2032, 853, 2381, 853, 2381, 2700, 573, 2666, 2739, - /* 1160 */ 2356, 839, 158, 119, 2702, 842, 2704, 2705, 837, 375, - /* 1170 */ 857, 2373, 2378, 2666, 291, 2911, 2198, 2793, 853, 2381, - /* 1180 */ 190, 464, 2789, 211, 148, 609, 2003, 2004, 1478, 2719, - /* 1190 */ 853, 2381, 2700, 321, 1937, 2739, 88, 2197, 299, 119, - /* 1200 */ 2702, 842, 2704, 2705, 837, 2666, 857, 838, 853, 2381, - /* 1210 */ 804, 2911, 2196, 2793, 493, 492, 2195, 464, 2789, 2194, - /* 1220 */ 853, 2381, 853, 2381, 1927, 1974, 1984, 2044, 332, 853, - /* 1230 */ 2381, 2583, 896, 2666, 2854, 2002, 2005, 2001, 34, 1920, - /* 1240 */ 818, 1942, 339, 1938, 1943, 43, 42, 41, 2037, 850, - /* 1250 */ 1914, 2588, 1912, 2700, 2666, 2607, 2739, 853, 2381, 769, - /* 1260 */ 119, 2702, 842, 2704, 2705, 837, 2193, 857, 1996, 2666, - /* 1270 */ 924, 922, 2768, 2666, 2793, 2190, 2666, 851, 464, 2789, - /* 1280 */ 156, 687, 1919, 2764, 2189, 686, 1917, 1918, 1971, 2269, - /* 1290 */ 1973, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 834, - /* 1300 */ 855, 854, 1995, 1997, 1998, 1999, 2000, 2, 47, 45, - /* 1310 */ 2188, 2701, 826, 290, 853, 2381, 468, 2187, 1913, 853, - /* 1320 */ 2381, 2186, 2185, 2666, 839, 307, 179, 2620, 1648, 780, - /* 1330 */ 2184, 2001, 2666, 1911, 367, 888, 2358, 2387, 2432, 490, - /* 1340 */ 2183, 2666, 1639, 886, 885, 884, 1643, 883, 1645, 1646, - /* 1350 */ 833, 832, 2719, 1654, 831, 1656, 1657, 830, 870, 867, - /* 1360 */ 892, 2182, 1996, 2432, 704, 703, 702, 2666, 2666, 161, - /* 1370 */ 838, 694, 152, 698, 2666, 170, 1919, 697, 2666, 2666, - /* 1380 */ 2441, 752, 696, 701, 445, 444, 2441, 2666, 695, 2891, - /* 1390 */ 790, 2441, 443, 691, 690, 689, 2078, 2666, 2610, 805, - /* 1400 */ 893, 798, 155, 2432, 1560, 813, 957, 2897, 216, 15, - /* 1410 */ 2440, 382, 2892, 787, 2418, 1928, 2700, 1923, 2666, 2739, - /* 1420 */ 2207, 952, 2253, 119, 2702, 842, 2704, 2705, 837, 276, - /* 1430 */ 857, 278, 274, 280, 277, 2766, 279, 2793, 418, 417, - /* 1440 */ 282, 464, 2789, 281, 705, 2003, 2004, 1561, 474, 692, - /* 1450 */ 506, 1931, 1933, 726, 693, 725, 54, 2251, 2242, 2240, - /* 1460 */ 271, 2001, 2701, 483, 789, 855, 854, 1995, 1997, 1998, - /* 1470 */ 1999, 2000, 1943, 1580, 1972, 839, 1921, 191, 1578, 707, - /* 1480 */ 709, 712, 2169, 2170, 1974, 1984, 677, 673, 669, 665, - /* 1490 */ 1533, 270, 1996, 315, 2002, 2005, 222, 799, 346, 345, - /* 1500 */ 40, 39, 162, 2719, 46, 44, 43, 42, 41, 1914, - /* 1510 */ 150, 1912, 348, 347, 162, 759, 170, 326, 49, 2666, - /* 1520 */ 49, 838, 2720, 186, 2801, 2802, 2308, 153, 2806, 200, - /* 1530 */ 77, 14, 13, 1534, 64, 49, 2307, 99, 2687, 2513, - /* 1540 */ 268, 2844, 49, 77, 2223, 1917, 1918, 1971, 766, 1973, - /* 1550 */ 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 834, 855, - /* 1560 */ 854, 1995, 1997, 1998, 1999, 2000, 2, 2700, 167, 734, - /* 1570 */ 2739, 170, 350, 349, 119, 2702, 842, 2704, 2705, 837, - /* 1580 */ 74, 857, 729, 1831, 352, 351, 823, 960, 2793, 354, - /* 1590 */ 353, 865, 464, 2789, 2701, 1839, 2112, 803, 330, 2122, - /* 1600 */ 168, 2121, 2689, 373, 170, 356, 355, 839, 256, 904, - /* 1610 */ 305, 810, 358, 357, 457, 2038, 1985, 267, 773, 950, - /* 1620 */ 206, 258, 265, 1784, 1774, 360, 359, 263, 651, 946, - /* 1630 */ 942, 938, 934, 1552, 370, 2719, 752, 362, 361, 1904, - /* 1640 */ 149, 1880, 364, 363, 2891, 167, 255, 366, 365, 342, - /* 1650 */ 453, 2666, 1630, 838, 1924, 905, 807, 497, 2514, 2229, - /* 1660 */ 2429, 380, 2897, 216, 745, 2845, 2855, 2892, 787, 2234, - /* 1670 */ 317, 2701, 1661, 476, 475, 1905, 781, 791, 312, 1550, - /* 1680 */ 118, 1669, 123, 343, 839, 1676, 782, 2342, 711, 855, - /* 1690 */ 854, 1995, 1997, 1998, 1999, 2000, 320, 500, 5, 2700, - /* 1700 */ 505, 513, 2739, 723, 2701, 432, 120, 2702, 842, 2704, - /* 1710 */ 2705, 837, 2719, 857, 514, 814, 1946, 839, 525, 286, - /* 1720 */ 2793, 1674, 948, 524, 2792, 2789, 173, 223, 2666, 224, - /* 1730 */ 838, 527, 226, 1808, 2701, 374, 714, 1936, 541, 1937, - /* 1740 */ 548, 554, 237, 708, 706, 2719, 550, 839, 556, 598, - /* 1750 */ 283, 2701, 561, 574, 587, 610, 585, 611, 608, 2506, - /* 1760 */ 341, 2666, 820, 838, 839, 324, 243, 613, 594, 597, - /* 1770 */ 323, 615, 599, 242, 246, 2719, 2700, 618, 620, 2739, - /* 1780 */ 616, 635, 1944, 120, 2702, 842, 2704, 2705, 837, 293, - /* 1790 */ 857, 2666, 2719, 838, 4, 636, 72, 2793, 643, 71, - /* 1800 */ 644, 825, 2789, 646, 254, 94, 1939, 648, 2666, 840, - /* 1810 */ 838, 257, 2739, 1945, 649, 1947, 120, 2702, 842, 2704, - /* 1820 */ 2705, 837, 652, 857, 650, 1948, 737, 260, 2701, 802, - /* 1830 */ 2793, 262, 95, 2529, 427, 2789, 1949, 96, 2523, 2700, - /* 1840 */ 97, 839, 2739, 661, 269, 2701, 184, 2702, 842, 2704, - /* 1850 */ 2705, 837, 682, 857, 684, 2371, 2700, 715, 839, 2739, - /* 1860 */ 716, 409, 273, 120, 2702, 842, 2704, 2705, 837, 2719, - /* 1870 */ 857, 2367, 728, 730, 275, 175, 121, 2793, 100, 124, - /* 1880 */ 752, 2369, 2790, 752, 2364, 2666, 2719, 838, 2891, 292, - /* 1890 */ 176, 2891, 177, 753, 2851, 163, 2597, 1940, 2594, 2593, - /* 1900 */ 740, 739, 2666, 376, 838, 741, 2897, 216, 747, 2897, - /* 1910 */ 216, 2892, 787, 297, 2892, 787, 295, 2575, 744, 8, - /* 1920 */ 2832, 770, 2860, 808, 302, 2701, 756, 455, 2859, 746, - /* 1930 */ 304, 779, 757, 2700, 189, 306, 2739, 755, 839, 309, - /* 1940 */ 184, 2702, 842, 2704, 2705, 837, 754, 857, 308, 310, - /* 1950 */ 2700, 784, 783, 2739, 2701, 458, 2914, 405, 2702, 842, - /* 1960 */ 2704, 2705, 837, 311, 857, 154, 2719, 839, 795, 2812, - /* 1970 */ 313, 2890, 792, 1941, 2086, 1, 316, 2084, 203, 322, - /* 1980 */ 164, 377, 2666, 378, 838, 2809, 806, 2543, 2852, 2542, - /* 1990 */ 2541, 462, 811, 812, 819, 2719, 165, 218, 61, 816, - /* 2000 */ 335, 846, 2774, 844, 340, 379, 849, 456, 848, 110, - /* 2010 */ 2382, 2666, 2658, 838, 2657, 2701, 2653, 112, 369, 2652, - /* 2020 */ 2644, 1453, 2643, 2635, 2634, 383, 2650, 2649, 839, 951, - /* 2030 */ 2700, 2641, 954, 2739, 956, 2640, 52, 405, 2702, 842, - /* 2040 */ 2704, 2705, 837, 387, 857, 2629, 2628, 174, 859, 732, - /* 2050 */ 407, 2701, 2647, 385, 419, 2646, 2719, 395, 2638, 2700, - /* 2060 */ 2637, 424, 2739, 2626, 836, 2625, 398, 2702, 842, 2704, - /* 2070 */ 2705, 837, 2666, 857, 838, 2623, 2622, 2433, 406, 396, - /* 2080 */ 2618, 2617, 2616, 83, 425, 2611, 502, 503, 1864, 1865, - /* 2090 */ 221, 2609, 2719, 507, 509, 510, 511, 1863, 2608, 433, - /* 2100 */ 2606, 516, 2605, 518, 2604, 520, 2603, 522, 2666, 1852, - /* 2110 */ 838, 225, 2578, 227, 1811, 84, 1810, 778, 2579, 2556, - /* 2120 */ 2700, 2555, 2554, 2739, 534, 535, 2553, 187, 2702, 842, - /* 2130 */ 2704, 2705, 837, 2552, 857, 2496, 539, 1747, 2493, 2492, - /* 2140 */ 2701, 2486, 542, 2483, 545, 546, 230, 2482, 87, 2481, - /* 2150 */ 2480, 2485, 2484, 839, 562, 234, 2700, 232, 2479, 2739, - /* 2160 */ 2478, 2476, 2475, 404, 2702, 842, 2704, 2705, 837, 2701, - /* 2170 */ 857, 2474, 2759, 2473, 564, 2471, 2470, 2469, 2468, 2467, - /* 2180 */ 2491, 2719, 839, 2466, 2465, 2464, 2489, 2913, 2472, 2463, - /* 2190 */ 2701, 236, 2453, 93, 2452, 2451, 2450, 2666, 2462, 838, - /* 2200 */ 2461, 2459, 2458, 839, 2457, 2456, 2455, 2454, 2449, 2521, - /* 2210 */ 2719, 2490, 2488, 2448, 2447, 1753, 2446, 241, 2445, 2701, - /* 2220 */ 601, 2444, 467, 603, 2443, 2442, 2666, 2273, 838, 244, - /* 2230 */ 2272, 2719, 839, 245, 1596, 2271, 247, 1600, 2270, 1604, - /* 2240 */ 421, 2268, 2265, 2264, 2257, 2700, 2244, 2666, 2739, 838, - /* 2250 */ 2218, 469, 405, 2702, 842, 2704, 2705, 837, 2217, 857, - /* 2260 */ 2719, 1526, 622, 621, 623, 248, 625, 1477, 629, 422, - /* 2270 */ 627, 633, 626, 198, 2700, 630, 2666, 2739, 838, 631, - /* 2280 */ 2577, 405, 2702, 842, 2704, 2705, 837, 2573, 857, 80, - /* 2290 */ 250, 2563, 252, 2551, 261, 727, 81, 2686, 2739, 259, - /* 2300 */ 208, 2550, 400, 2702, 842, 2704, 2705, 837, 264, 857, - /* 2310 */ 641, 2527, 266, 2701, 2520, 2359, 2267, 2263, 662, 663, - /* 2320 */ 664, 2261, 666, 667, 2700, 668, 839, 2739, 2259, 670, - /* 2330 */ 2701, 390, 2702, 842, 2704, 2705, 837, 672, 857, 2256, - /* 2340 */ 671, 674, 675, 839, 676, 2239, 2237, 2701, 2238, 2236, - /* 2350 */ 2214, 2361, 272, 73, 2719, 1681, 1680, 2360, 2254, 1586, - /* 2360 */ 839, 1585, 1584, 1581, 1579, 2252, 1577, 1576, 1575, 1574, - /* 2370 */ 2666, 2719, 838, 921, 923, 1573, 1568, 446, 447, 1570, - /* 2380 */ 1569, 1567, 2243, 2241, 448, 449, 2213, 2666, 2719, 838, - /* 2390 */ 713, 2212, 2211, 2210, 2209, 721, 717, 719, 126, 2576, - /* 2400 */ 1850, 710, 28, 1846, 2666, 1848, 838, 1845, 1836, 67, - /* 2410 */ 2701, 2572, 1817, 294, 2562, 2549, 2548, 1819, 2700, 178, - /* 2420 */ 742, 2739, 2896, 839, 17, 389, 2702, 842, 2704, 2705, - /* 2430 */ 837, 6, 857, 20, 2139, 2700, 30, 7, 2739, 748, - /* 2440 */ 758, 454, 391, 2702, 842, 2704, 2705, 837, 301, 857, - /* 2450 */ 56, 2719, 2700, 21, 57, 2739, 1821, 22, 743, 397, - /* 2460 */ 2702, 842, 2704, 2705, 837, 298, 857, 2666, 202, 838, - /* 2470 */ 750, 32, 1796, 23, 1795, 213, 2687, 2079, 214, 2081, - /* 2480 */ 731, 2113, 760, 762, 188, 764, 65, 24, 303, 2154, - /* 2490 */ 2701, 2120, 201, 31, 2153, 459, 2158, 2157, 2107, 2077, - /* 2500 */ 460, 82, 215, 839, 2159, 318, 59, 2701, 2547, 2526, - /* 2510 */ 2160, 193, 105, 2525, 104, 2700, 2061, 106, 2739, 2060, - /* 2520 */ 839, 325, 401, 2702, 842, 2704, 2705, 837, 2519, 857, - /* 2530 */ 204, 2719, 2115, 2701, 331, 107, 69, 13, 25, 815, - /* 2540 */ 2013, 334, 2012, 1929, 11, 809, 839, 2666, 2719, 838, - /* 2550 */ 58, 1988, 2023, 1987, 872, 194, 205, 18, 1986, 875, - /* 2560 */ 878, 881, 38, 16, 2666, 1956, 838, 1964, 26, 2518, - /* 2570 */ 2701, 841, 108, 344, 2719, 845, 858, 27, 70, 338, - /* 2580 */ 109, 2744, 2175, 839, 2743, 2174, 1990, 856, 2173, 68, - /* 2590 */ 2666, 113, 838, 1662, 864, 2700, 485, 866, 2739, 817, - /* 2600 */ 336, 1659, 392, 2702, 842, 2704, 2705, 837, 868, 857, - /* 2610 */ 333, 2719, 2700, 869, 871, 2739, 1658, 1655, 874, 402, - /* 2620 */ 2702, 842, 2704, 2705, 837, 847, 857, 2666, 1649, 838, - /* 2630 */ 877, 2701, 1647, 880, 368, 2172, 1675, 1671, 2700, 114, - /* 2640 */ 115, 2739, 79, 895, 839, 393, 2702, 842, 2704, 2705, - /* 2650 */ 837, 1653, 857, 1652, 2701, 1564, 1651, 1650, 1563, 1524, - /* 2660 */ 1562, 1559, 1556, 1555, 1554, 1553, 1551, 839, 1549, 1548, - /* 2670 */ 1594, 1547, 2719, 219, 909, 2700, 1545, 1593, 2739, 911, - /* 2680 */ 1544, 1543, 403, 2702, 842, 2704, 2705, 837, 2666, 857, - /* 2690 */ 838, 1542, 1541, 1540, 1539, 2719, 1590, 1588, 1536, 1535, - /* 2700 */ 1532, 1531, 1530, 1529, 2262, 931, 932, 933, 2260, 935, - /* 2710 */ 936, 2666, 937, 838, 939, 2701, 2258, 941, 2255, 940, - /* 2720 */ 943, 945, 2235, 944, 947, 2233, 1466, 949, 839, 1454, - /* 2730 */ 953, 372, 955, 2178, 1915, 384, 2700, 2208, 958, 2739, - /* 2740 */ 2701, 959, 2178, 394, 2702, 842, 2704, 2705, 837, 2178, - /* 2750 */ 857, 2178, 2178, 839, 2178, 2178, 2719, 2178, 2178, 2700, - /* 2760 */ 2178, 2178, 2739, 2178, 2178, 2178, 410, 2702, 842, 2704, - /* 2770 */ 2705, 837, 2666, 857, 838, 2178, 2178, 2178, 2178, 2178, - /* 2780 */ 2178, 2719, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2790 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2666, 2178, 838, - /* 2800 */ 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2810 */ 2178, 2178, 2178, 2178, 839, 2178, 2178, 2178, 2178, 2178, - /* 2820 */ 2700, 2178, 2701, 2739, 2178, 2178, 2178, 411, 2702, 842, - /* 2830 */ 2704, 2705, 837, 2178, 857, 839, 2178, 2178, 2178, 2178, - /* 2840 */ 2178, 2178, 2719, 2178, 2178, 2700, 2178, 2178, 2739, 2178, - /* 2850 */ 2178, 2178, 2713, 2702, 842, 2704, 2705, 837, 2666, 857, - /* 2860 */ 838, 2178, 2178, 2719, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2870 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2666, - /* 2880 */ 2178, 838, 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2890 */ 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, 2178, - /* 2900 */ 2178, 2178, 2178, 2178, 2178, 2178, 2700, 2178, 2178, 2739, - /* 2910 */ 2178, 2178, 2178, 2712, 2702, 842, 2704, 2705, 837, 2178, - /* 2920 */ 857, 2178, 2178, 2178, 2719, 2178, 2178, 2700, 2178, 2178, - /* 2930 */ 2739, 2178, 2178, 2178, 2711, 2702, 842, 2704, 2705, 837, - /* 2940 */ 2666, 857, 838, 2178, 2701, 2178, 2178, 2178, 2178, 2178, - /* 2950 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, - /* 2960 */ 2178, 2178, 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, - /* 2970 */ 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, 2178, - /* 2980 */ 2178, 2178, 2178, 2178, 2178, 2719, 2178, 2178, 2700, 2178, - /* 2990 */ 2178, 2739, 2178, 2178, 2178, 429, 2702, 842, 2704, 2705, - /* 3000 */ 837, 2666, 857, 838, 2719, 2178, 2178, 2178, 2178, 2178, - /* 3010 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3020 */ 2666, 2178, 838, 2178, 2701, 2178, 2178, 2178, 2178, 2178, - /* 3030 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2178, - /* 3040 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2700, - /* 3050 */ 2178, 2178, 2739, 2178, 2178, 2178, 430, 2702, 842, 2704, - /* 3060 */ 2705, 837, 2178, 857, 2178, 2719, 2178, 2178, 2700, 2178, - /* 3070 */ 2178, 2739, 2178, 2178, 2178, 426, 2702, 842, 2704, 2705, - /* 3080 */ 837, 2666, 857, 838, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3090 */ 2178, 2178, 2178, 2701, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3100 */ 2178, 2178, 2178, 2178, 2178, 2178, 839, 2178, 2701, 2178, - /* 3110 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3120 */ 2178, 839, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2700, - /* 3130 */ 2178, 2178, 2739, 2178, 2719, 2178, 431, 2702, 842, 2704, - /* 3140 */ 2705, 837, 2178, 857, 2178, 2178, 2178, 2178, 2178, 2719, - /* 3150 */ 2666, 2178, 838, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3160 */ 2178, 2178, 2178, 2178, 2178, 2666, 2178, 838, 2178, 2178, - /* 3170 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3180 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, - /* 3190 */ 2178, 2178, 2178, 2178, 2178, 2178, 2178, 2178, 840, 2178, - /* 3200 */ 2178, 2739, 2178, 2178, 2178, 400, 2702, 842, 2704, 2705, - /* 3210 */ 837, 2178, 857, 2700, 2178, 2178, 2739, 2178, 2178, 2178, - /* 3220 */ 399, 2702, 842, 2704, 2705, 837, 2178, 857, + /* 0 */ 37, 338, 2538, 2705, 639, 542, 2373, 640, 2225, 190, + /* 10 */ 2680, 315, 47, 45, 2095, 2812, 803, 464, 494, 493, + /* 20 */ 469, 2183, 1916, 2535, 845, 40, 39, 2705, 66, 46, + /* 30 */ 44, 43, 42, 41, 1941, 2004, 1941, 1914, 2684, 2480, + /* 40 */ 838, 2809, 136, 1923, 2723, 135, 134, 133, 132, 131, + /* 50 */ 130, 129, 128, 127, 604, 602, 831, 409, 854, 372, + /* 60 */ 2670, 230, 840, 2368, 417, 33, 1999, 830, 2723, 800, + /* 70 */ 155, 40, 39, 19, 301, 46, 44, 43, 42, 41, + /* 80 */ 1922, 2269, 800, 155, 2670, 210, 840, 724, 136, 2686, + /* 90 */ 2689, 135, 134, 133, 132, 131, 130, 129, 128, 127, + /* 100 */ 859, 2431, 722, 252, 720, 286, 285, 642, 2704, 2233, + /* 110 */ 959, 2743, 2812, 15, 1942, 119, 2706, 844, 2708, 2709, + /* 120 */ 839, 647, 859, 103, 640, 2225, 197, 199, 854, 2797, + /* 130 */ 644, 2139, 2704, 465, 2793, 2743, 641, 62, 2808, 405, + /* 140 */ 2706, 844, 2708, 2709, 839, 837, 859, 823, 2762, 2006, + /* 150 */ 2007, 50, 437, 218, 2511, 753, 932, 931, 930, 929, + /* 160 */ 497, 2844, 928, 927, 160, 922, 921, 920, 919, 918, + /* 170 */ 917, 916, 159, 910, 909, 908, 496, 495, 905, 904, + /* 180 */ 903, 196, 195, 902, 492, 901, 900, 899, 1977, 1987, + /* 190 */ 802, 185, 2805, 2806, 778, 153, 2810, 290, 2005, 2008, + /* 200 */ 800, 155, 1762, 1763, 192, 2805, 799, 579, 147, 798, + /* 210 */ 788, 2663, 578, 1917, 485, 1915, 2895, 9, 2895, 2099, + /* 220 */ 577, 1926, 40, 39, 737, 1941, 46, 44, 43, 42, + /* 230 */ 41, 2360, 2705, 2205, 787, 217, 787, 217, 122, 2896, + /* 240 */ 789, 2896, 789, 1689, 1690, 841, 2388, 487, 2386, 1920, + /* 250 */ 1921, 1974, 777, 1976, 1979, 1980, 1981, 1982, 1983, 1984, + /* 260 */ 1985, 1986, 836, 857, 856, 1998, 2000, 2001, 2002, 2003, + /* 270 */ 2, 47, 45, 2723, 915, 474, 414, 2344, 1939, 469, + /* 280 */ 2723, 1916, 1843, 1844, 2900, 586, 859, 429, 607, 2670, + /* 290 */ 2670, 840, 2895, 606, 2004, 60, 1914, 40, 39, 453, + /* 300 */ 2585, 46, 44, 43, 42, 41, 751, 2014, 734, 1945, + /* 310 */ 565, 2899, 608, 1941, 197, 2896, 2898, 415, 567, 1498, + /* 320 */ 322, 1497, 125, 2805, 2806, 1999, 153, 2810, 180, 545, + /* 330 */ 855, 2384, 19, 662, 322, 2033, 151, 2704, 2387, 1922, + /* 340 */ 2743, 2070, 2512, 773, 119, 2706, 844, 2708, 2709, 839, + /* 350 */ 221, 859, 1471, 776, 157, 1499, 166, 2768, 2797, 2182, + /* 360 */ 40, 39, 465, 2793, 46, 44, 43, 42, 41, 959, + /* 370 */ 438, 1478, 15, 896, 172, 171, 893, 892, 891, 169, + /* 380 */ 1945, 553, 1941, 145, 144, 143, 142, 141, 140, 139, + /* 390 */ 138, 137, 655, 1978, 1473, 1476, 1477, 535, 62, 40, + /* 400 */ 39, 2034, 534, 46, 44, 43, 42, 41, 2006, 2007, + /* 410 */ 659, 2518, 2497, 658, 594, 593, 592, 591, 590, 585, + /* 420 */ 584, 583, 582, 421, 29, 1974, 2070, 572, 571, 570, + /* 430 */ 569, 568, 562, 561, 560, 254, 555, 554, 436, 642, + /* 440 */ 854, 2233, 546, 1750, 1751, 329, 330, 1977, 1987, 1769, + /* 450 */ 328, 754, 779, 774, 767, 763, 1975, 2005, 2008, 2895, + /* 460 */ 2817, 2067, 2068, 2069, 2817, 2817, 2817, 2817, 2817, 2525, + /* 470 */ 2375, 660, 1917, 519, 1915, 62, 898, 2901, 217, 213, + /* 480 */ 738, 1978, 2896, 789, 855, 2384, 855, 2384, 36, 467, + /* 490 */ 2028, 2029, 2030, 2031, 2032, 2036, 2037, 2038, 2039, 2072, + /* 500 */ 2073, 2074, 2075, 2076, 146, 2140, 55, 376, 1920, 1921, + /* 510 */ 1974, 685, 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + /* 520 */ 1986, 836, 857, 856, 1998, 2000, 2001, 2002, 2003, 2, + /* 530 */ 12, 47, 45, 50, 474, 1925, 2705, 2538, 181, 469, + /* 540 */ 1946, 1916, 116, 389, 1975, 859, 2067, 2068, 2069, 803, + /* 550 */ 208, 113, 471, 598, 2004, 1589, 1914, 2170, 2535, 845, + /* 560 */ 387, 76, 649, 2577, 75, 2705, 40, 39, 452, 2585, + /* 570 */ 46, 44, 43, 42, 41, 416, 735, 2723, 841, 2070, + /* 580 */ 2235, 322, 1942, 1922, 2680, 1999, 2900, 250, 621, 619, + /* 590 */ 616, 614, 19, 2670, 2895, 840, 40, 39, 1591, 1922, + /* 600 */ 46, 44, 43, 42, 41, 2490, 2723, 706, 705, 704, + /* 610 */ 523, 1946, 2684, 2899, 696, 152, 700, 2896, 2897, 241, + /* 620 */ 699, 2538, 2670, 656, 840, 698, 703, 446, 445, 959, + /* 630 */ 912, 697, 15, 62, 98, 444, 693, 692, 691, 525, + /* 640 */ 521, 2704, 2536, 845, 2743, 597, 240, 549, 119, 2706, + /* 650 */ 844, 2708, 2709, 839, 795, 859, 855, 2384, 322, 595, + /* 660 */ 199, 2380, 2797, 2686, 2688, 466, 465, 2793, 2006, 2007, + /* 670 */ 2704, 63, 2111, 2743, 859, 2169, 146, 119, 2706, 844, + /* 680 */ 2708, 2709, 839, 690, 859, 12, 2128, 657, 2531, 2915, + /* 690 */ 183, 2797, 2194, 51, 2845, 465, 2793, 914, 2817, 2067, + /* 700 */ 2068, 2069, 2817, 2817, 2817, 2817, 2817, 1977, 1987, 35, + /* 710 */ 1944, 1789, 1790, 1928, 2180, 40, 39, 2005, 2008, 46, + /* 720 */ 44, 43, 42, 41, 2358, 86, 85, 538, 2438, 2439, + /* 730 */ 229, 2092, 1917, 2444, 1915, 46, 44, 43, 42, 41, + /* 740 */ 98, 435, 2623, 530, 528, 770, 769, 2126, 2127, 2129, + /* 750 */ 2130, 2131, 2442, 12, 289, 10, 413, 439, 288, 517, + /* 760 */ 1788, 1791, 513, 509, 505, 502, 531, 2379, 1920, 1921, + /* 770 */ 1974, 1584, 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, + /* 780 */ 1986, 836, 857, 856, 1998, 2000, 2001, 2002, 2003, 2, + /* 790 */ 47, 45, 2009, 1498, 2705, 1497, 754, 480, 469, 236, + /* 800 */ 1916, 500, 180, 865, 2895, 889, 499, 841, 2900, 2852, + /* 810 */ 2664, 487, 2386, 2004, 1585, 1914, 322, 489, 2705, 78, + /* 820 */ 2437, 2439, 2901, 217, 1601, 1944, 2812, 2896, 789, 1499, + /* 830 */ 788, 841, 101, 2865, 636, 2723, 1941, 424, 2895, 1600, + /* 840 */ 451, 2444, 726, 634, 1999, 92, 630, 626, 91, 462, + /* 850 */ 211, 2670, 2807, 840, 829, 754, 787, 217, 1922, 2723, + /* 860 */ 2442, 2896, 789, 2895, 855, 2384, 896, 172, 171, 893, + /* 870 */ 892, 891, 169, 89, 474, 2670, 322, 840, 443, 442, + /* 880 */ 320, 2901, 217, 483, 539, 859, 2896, 789, 959, 2463, + /* 890 */ 2371, 48, 896, 172, 171, 893, 892, 891, 169, 2704, + /* 900 */ 1501, 1502, 2743, 3, 2705, 738, 119, 2706, 844, 2708, + /* 910 */ 2709, 839, 609, 859, 1916, 53, 90, 841, 2915, 2163, + /* 920 */ 2797, 855, 2384, 2704, 465, 2793, 2743, 2006, 2007, 1914, + /* 930 */ 119, 2706, 844, 2708, 2709, 839, 824, 859, 2769, 551, + /* 940 */ 2507, 540, 2915, 796, 2797, 2723, 557, 2507, 465, 2793, + /* 950 */ 472, 864, 863, 862, 855, 2384, 441, 440, 179, 687, + /* 960 */ 2444, 2670, 826, 840, 2769, 2705, 1977, 1987, 473, 2389, + /* 970 */ 855, 2384, 1922, 1478, 661, 1885, 2005, 2008, 841, 2442, + /* 980 */ 765, 689, 2366, 855, 2384, 688, 2444, 740, 2577, 297, + /* 990 */ 559, 1917, 232, 1915, 488, 320, 2120, 1476, 1477, 234, + /* 1000 */ 588, 2507, 959, 573, 1978, 2442, 2723, 479, 478, 2704, + /* 1010 */ 62, 2121, 2743, 1945, 681, 680, 187, 2706, 844, 2708, + /* 1020 */ 2709, 839, 2670, 859, 840, 2091, 2204, 1920, 1921, 1974, + /* 1030 */ 2025, 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, + /* 1040 */ 836, 857, 856, 1998, 2000, 2001, 2002, 2003, 2, 47, + /* 1050 */ 45, 2705, 490, 239, 2119, 581, 580, 469, 382, 1916, + /* 1060 */ 179, 1884, 683, 682, 841, 102, 2888, 1975, 855, 2384, + /* 1070 */ 2704, 2389, 2004, 2743, 1914, 790, 2916, 119, 2706, 844, + /* 1080 */ 2708, 2709, 839, 2670, 859, 702, 701, 2705, 574, 2915, + /* 1090 */ 182, 2797, 2723, 482, 481, 465, 2793, 1605, 2318, 1817, + /* 1100 */ 841, 2203, 2829, 1999, 1650, 1917, 2388, 1915, 2670, 533, + /* 1110 */ 840, 532, 1604, 111, 14, 13, 2202, 1922, 1641, 888, + /* 1120 */ 887, 886, 1645, 885, 1647, 1648, 884, 881, 2723, 1656, + /* 1130 */ 878, 1658, 1659, 875, 872, 869, 2195, 855, 2384, 2377, + /* 1140 */ 2319, 1920, 1921, 531, 2670, 117, 840, 959, 2705, 2899, + /* 1150 */ 48, 2035, 855, 2384, 855, 2384, 2704, 575, 2670, 2743, + /* 1160 */ 2359, 841, 158, 119, 2706, 844, 2708, 2709, 839, 376, + /* 1170 */ 859, 2376, 2381, 2670, 292, 2915, 2201, 2797, 855, 2384, + /* 1180 */ 190, 465, 2793, 212, 148, 611, 2006, 2007, 1480, 2723, + /* 1190 */ 855, 2384, 2704, 322, 1940, 2743, 88, 2200, 300, 119, + /* 1200 */ 2706, 844, 2708, 2709, 839, 2670, 859, 840, 855, 2384, + /* 1210 */ 806, 2915, 2199, 2797, 494, 493, 2198, 465, 2793, 2197, + /* 1220 */ 855, 2384, 855, 2384, 1930, 1977, 1987, 2047, 333, 855, + /* 1230 */ 2384, 2586, 898, 2670, 2858, 2005, 2008, 2004, 34, 1923, + /* 1240 */ 820, 1945, 340, 1941, 1946, 43, 42, 41, 2040, 852, + /* 1250 */ 1917, 2591, 1915, 2704, 2670, 2610, 2743, 855, 2384, 771, + /* 1260 */ 119, 2706, 844, 2708, 2709, 839, 2196, 859, 1999, 2670, + /* 1270 */ 926, 924, 2772, 2670, 2797, 2193, 2670, 853, 465, 2793, + /* 1280 */ 156, 689, 1922, 2768, 2192, 688, 1920, 1921, 1974, 2272, + /* 1290 */ 1976, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 836, + /* 1300 */ 857, 856, 1998, 2000, 2001, 2002, 2003, 2, 47, 45, + /* 1310 */ 2191, 2705, 828, 291, 855, 2384, 469, 2190, 1916, 855, + /* 1320 */ 2384, 2189, 2188, 2670, 841, 308, 179, 2624, 1650, 782, + /* 1330 */ 2187, 2004, 2670, 1914, 368, 890, 792, 2390, 2435, 491, + /* 1340 */ 2186, 2670, 1641, 888, 887, 886, 1645, 885, 1647, 1648, + /* 1350 */ 835, 834, 2723, 1656, 833, 1658, 1659, 832, 872, 869, + /* 1360 */ 894, 2185, 1999, 2435, 706, 705, 704, 2670, 2670, 170, + /* 1370 */ 840, 696, 152, 700, 2670, 316, 1922, 699, 2670, 2670, + /* 1380 */ 2444, 754, 698, 703, 446, 445, 2444, 2670, 697, 2895, + /* 1390 */ 2237, 2444, 444, 693, 692, 691, 2081, 2670, 514, 807, + /* 1400 */ 895, 800, 155, 2435, 2614, 815, 959, 2901, 217, 15, + /* 1410 */ 2443, 383, 2896, 789, 2421, 1931, 2704, 1926, 2670, 2743, + /* 1420 */ 2210, 954, 223, 119, 2706, 844, 2708, 2709, 839, 277, + /* 1430 */ 859, 279, 275, 281, 278, 2770, 280, 2797, 419, 418, + /* 1440 */ 2361, 465, 2793, 950, 283, 2006, 2007, 282, 475, 162, + /* 1450 */ 54, 1934, 1936, 162, 694, 695, 507, 728, 2691, 727, + /* 1460 */ 272, 2004, 2705, 484, 791, 857, 856, 1998, 2000, 2001, + /* 1470 */ 2002, 2003, 1946, 161, 1975, 841, 2256, 191, 1582, 1580, + /* 1480 */ 2254, 2172, 2173, 1562, 1977, 1987, 679, 675, 671, 667, + /* 1490 */ 2245, 271, 1999, 2243, 2005, 2008, 207, 801, 707, 150, + /* 1500 */ 40, 39, 709, 2723, 46, 44, 43, 42, 41, 1917, + /* 1510 */ 761, 1915, 711, 2724, 49, 714, 170, 906, 49, 2670, + /* 1520 */ 200, 840, 2693, 186, 2805, 2806, 1563, 153, 2810, 327, + /* 1530 */ 1833, 2311, 77, 2310, 1841, 64, 2516, 99, 347, 346, + /* 1540 */ 269, 1554, 14, 13, 49, 1920, 1921, 1974, 2226, 1976, + /* 1550 */ 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 836, 857, + /* 1560 */ 856, 1998, 2000, 2001, 2002, 2003, 2, 2704, 49, 736, + /* 1570 */ 2743, 77, 349, 348, 119, 2706, 844, 2708, 2709, 839, + /* 1580 */ 167, 859, 731, 170, 351, 350, 825, 962, 2797, 353, + /* 1590 */ 352, 2115, 465, 2793, 2705, 2125, 74, 805, 867, 2124, + /* 1600 */ 168, 306, 2848, 374, 355, 354, 170, 841, 257, 768, + /* 1610 */ 331, 458, 775, 812, 357, 356, 2041, 268, 454, 952, + /* 1620 */ 206, 259, 266, 793, 149, 1988, 1924, 264, 653, 948, + /* 1630 */ 944, 940, 936, 167, 371, 2723, 754, 809, 498, 1907, + /* 1640 */ 516, 1883, 359, 358, 2895, 907, 256, 361, 360, 1786, + /* 1650 */ 2517, 2670, 1776, 840, 363, 362, 365, 364, 1535, 367, + /* 1660 */ 366, 343, 2901, 217, 1632, 2232, 747, 2896, 789, 1552, + /* 1670 */ 2432, 2705, 783, 477, 476, 1908, 2849, 381, 2859, 1663, + /* 1680 */ 118, 1671, 123, 344, 841, 784, 318, 1678, 713, 857, + /* 1690 */ 856, 1998, 2000, 2001, 2002, 2003, 313, 321, 2345, 2704, + /* 1700 */ 5, 1536, 2743, 725, 2705, 1676, 120, 2706, 844, 2708, + /* 1710 */ 2709, 839, 2723, 859, 173, 816, 501, 841, 506, 287, + /* 1720 */ 2797, 1939, 433, 1949, 2796, 2793, 515, 526, 2670, 527, + /* 1730 */ 840, 224, 529, 225, 2705, 1810, 716, 227, 375, 543, + /* 1740 */ 1940, 550, 238, 710, 708, 2723, 552, 841, 600, 556, + /* 1750 */ 284, 2705, 558, 563, 587, 576, 2509, 589, 613, 612, + /* 1760 */ 342, 2670, 822, 840, 841, 325, 596, 610, 599, 601, + /* 1770 */ 324, 243, 244, 615, 247, 2723, 2704, 617, 618, 2743, + /* 1780 */ 620, 637, 622, 120, 2706, 844, 2708, 2709, 839, 294, + /* 1790 */ 859, 2670, 2723, 840, 1947, 4, 72, 2797, 638, 71, + /* 1800 */ 646, 827, 2793, 645, 1927, 648, 255, 94, 2670, 842, + /* 1810 */ 840, 1942, 2743, 650, 258, 1948, 120, 2706, 844, 2708, + /* 1820 */ 2709, 839, 651, 859, 1950, 652, 739, 261, 2705, 804, + /* 1830 */ 2797, 654, 263, 1951, 428, 2793, 2532, 95, 1952, 2704, + /* 1840 */ 684, 841, 2743, 2526, 96, 2705, 184, 2706, 844, 2708, + /* 1850 */ 2709, 839, 97, 859, 663, 270, 2704, 410, 841, 2743, + /* 1860 */ 717, 718, 124, 120, 2706, 844, 2708, 2709, 839, 2723, + /* 1870 */ 859, 686, 2600, 2374, 274, 2597, 100, 2797, 2370, 276, + /* 1880 */ 754, 175, 2794, 754, 121, 2670, 2723, 840, 2895, 2372, + /* 1890 */ 2367, 2895, 176, 755, 2855, 177, 2596, 730, 377, 163, + /* 1900 */ 732, 293, 2670, 1943, 840, 2578, 2901, 217, 742, 2901, + /* 1910 */ 217, 2896, 789, 741, 2896, 789, 298, 743, 296, 749, + /* 1920 */ 746, 748, 758, 772, 810, 2705, 8, 456, 2864, 2863, + /* 1930 */ 2836, 303, 781, 2704, 307, 189, 2743, 759, 841, 757, + /* 1940 */ 184, 2706, 844, 2708, 2709, 839, 305, 859, 311, 309, + /* 1950 */ 2704, 756, 312, 2743, 2705, 310, 786, 406, 2706, 844, + /* 1960 */ 2708, 2709, 839, 459, 859, 785, 2723, 841, 2918, 794, + /* 1970 */ 797, 2816, 314, 154, 1944, 2894, 317, 2089, 2087, 203, + /* 1980 */ 323, 2813, 2670, 164, 840, 808, 378, 2546, 2856, 2545, + /* 1990 */ 1, 219, 2544, 379, 463, 2723, 813, 814, 818, 165, + /* 2000 */ 61, 336, 821, 2778, 846, 848, 850, 457, 341, 851, + /* 2010 */ 380, 2670, 110, 840, 2385, 2705, 2662, 112, 1455, 2661, + /* 2020 */ 2657, 953, 861, 2656, 2648, 384, 2647, 956, 841, 2639, + /* 2030 */ 2704, 2638, 2654, 2743, 2653, 2645, 370, 406, 2706, 844, + /* 2040 */ 2708, 2709, 839, 2644, 859, 2633, 52, 174, 2632, 2651, + /* 2050 */ 408, 2705, 958, 2650, 734, 2642, 2723, 396, 386, 2704, + /* 2060 */ 2641, 2630, 2743, 2629, 838, 2627, 399, 2706, 844, 2708, + /* 2070 */ 2709, 839, 2670, 859, 840, 420, 2626, 2436, 407, 397, + /* 2080 */ 2622, 388, 2621, 2620, 425, 83, 426, 2615, 503, 504, + /* 2090 */ 1867, 1868, 2723, 222, 2613, 508, 510, 511, 512, 1866, + /* 2100 */ 2612, 2611, 434, 2609, 518, 2608, 520, 2607, 2670, 2606, + /* 2110 */ 840, 522, 524, 1854, 2582, 226, 2581, 780, 228, 1812, + /* 2120 */ 2704, 84, 1813, 2743, 2559, 2558, 2557, 187, 2706, 844, + /* 2130 */ 2708, 2709, 839, 536, 859, 537, 2556, 2555, 2499, 541, + /* 2140 */ 2705, 1749, 2496, 544, 2495, 2489, 2486, 547, 548, 2485, + /* 2150 */ 2484, 231, 2483, 841, 235, 564, 2704, 87, 2488, 2743, + /* 2160 */ 2487, 2482, 233, 405, 2706, 844, 2708, 2709, 839, 2705, + /* 2170 */ 859, 2481, 2763, 2479, 2478, 2477, 2476, 566, 2474, 2473, + /* 2180 */ 2472, 2723, 841, 2471, 2470, 2494, 2469, 2917, 2468, 2467, + /* 2190 */ 2705, 1755, 237, 2456, 2455, 2454, 93, 2670, 2492, 840, + /* 2200 */ 2475, 2466, 2465, 841, 2464, 2462, 2461, 2460, 2459, 2458, + /* 2210 */ 2723, 2457, 2453, 2452, 2524, 2493, 2491, 2451, 2450, 2705, + /* 2220 */ 2449, 2448, 468, 2447, 242, 603, 2670, 2446, 840, 605, + /* 2230 */ 2445, 2723, 841, 2276, 245, 2275, 246, 422, 2274, 2273, + /* 2240 */ 423, 1602, 2271, 248, 1606, 2704, 2268, 2670, 2743, 840, + /* 2250 */ 2267, 470, 406, 2706, 844, 2708, 2709, 839, 249, 859, + /* 2260 */ 2723, 1598, 623, 2260, 2247, 2221, 627, 1479, 625, 631, + /* 2270 */ 2220, 635, 2580, 629, 2704, 262, 2670, 2743, 840, 253, + /* 2280 */ 624, 406, 2706, 844, 2708, 2709, 839, 633, 859, 628, + /* 2290 */ 198, 80, 632, 251, 2576, 729, 2690, 81, 2743, 2566, + /* 2300 */ 209, 2554, 401, 2706, 844, 2708, 2709, 839, 643, 859, + /* 2310 */ 260, 2553, 2530, 2705, 2523, 265, 267, 2362, 1528, 2270, + /* 2320 */ 2266, 664, 666, 665, 2704, 2264, 841, 2743, 668, 669, + /* 2330 */ 2705, 391, 2706, 844, 2708, 2709, 839, 670, 859, 2262, + /* 2340 */ 672, 673, 674, 841, 2259, 676, 678, 2705, 677, 2242, + /* 2350 */ 2240, 2241, 2239, 2217, 2723, 2364, 1682, 2363, 1683, 1588, + /* 2360 */ 841, 1587, 73, 1586, 1583, 1581, 1579, 1578, 1577, 1576, + /* 2370 */ 2670, 2723, 840, 273, 923, 1575, 925, 1572, 1570, 1571, + /* 2380 */ 2257, 447, 1569, 2255, 448, 2246, 449, 2670, 2723, 840, + /* 2390 */ 2244, 450, 2216, 2215, 2214, 715, 2213, 719, 2212, 723, + /* 2400 */ 712, 126, 721, 1848, 2670, 1850, 840, 1847, 2579, 2575, + /* 2410 */ 2705, 1852, 295, 1819, 2565, 28, 2552, 1823, 2704, 67, + /* 2420 */ 2551, 2743, 1838, 841, 733, 390, 2706, 844, 2708, 2709, + /* 2430 */ 839, 2900, 859, 56, 1821, 2704, 20, 744, 2743, 17, + /* 2440 */ 21, 760, 392, 2706, 844, 2708, 2709, 839, 57, 859, + /* 2450 */ 745, 2723, 2704, 2550, 455, 2743, 6, 299, 764, 398, + /* 2460 */ 2706, 844, 2708, 2709, 839, 22, 859, 2670, 1798, 840, + /* 2470 */ 202, 1797, 178, 750, 752, 7, 214, 32, 2691, 2082, + /* 2480 */ 30, 766, 23, 215, 2084, 2142, 302, 65, 2116, 304, + /* 2490 */ 2705, 762, 24, 2123, 2157, 188, 2529, 201, 2156, 31, + /* 2500 */ 460, 2110, 82, 841, 18, 2080, 2161, 2705, 216, 2160, + /* 2510 */ 461, 2162, 59, 319, 2163, 2704, 2064, 193, 2743, 2063, + /* 2520 */ 841, 2528, 402, 2706, 844, 2708, 2709, 839, 105, 859, + /* 2530 */ 106, 2723, 104, 2705, 2522, 326, 107, 2118, 817, 204, + /* 2540 */ 25, 811, 13, 332, 69, 2016, 841, 2670, 2723, 840, + /* 2550 */ 1932, 334, 335, 2015, 58, 11, 2026, 194, 205, 1991, + /* 2560 */ 1990, 874, 877, 1967, 2670, 880, 840, 883, 38, 16, + /* 2570 */ 2705, 2521, 1989, 26, 2723, 843, 1959, 108, 27, 70, + /* 2580 */ 339, 819, 345, 841, 847, 1993, 2178, 109, 2177, 2748, + /* 2590 */ 2670, 2747, 840, 337, 858, 2704, 68, 113, 2743, 2176, + /* 2600 */ 860, 1664, 393, 2706, 844, 2708, 2709, 839, 868, 859, + /* 2610 */ 866, 2723, 2704, 486, 1661, 2743, 870, 1660, 871, 403, + /* 2620 */ 2706, 844, 2708, 2709, 839, 873, 859, 2670, 849, 840, + /* 2630 */ 1657, 2705, 876, 1651, 879, 882, 2175, 1649, 2704, 114, + /* 2640 */ 1655, 2743, 369, 115, 841, 394, 2706, 844, 2708, 2709, + /* 2650 */ 839, 1654, 859, 1677, 2705, 79, 1653, 1673, 1652, 1526, + /* 2660 */ 897, 1566, 1565, 1564, 1561, 1558, 1557, 841, 1556, 1555, + /* 2670 */ 1553, 1551, 2723, 1550, 1549, 2704, 1596, 911, 2743, 1595, + /* 2680 */ 220, 913, 404, 2706, 844, 2708, 2709, 839, 2670, 859, + /* 2690 */ 840, 1547, 1546, 1545, 1544, 2723, 1543, 1542, 1541, 1592, + /* 2700 */ 1590, 1538, 1537, 1534, 1533, 1532, 1531, 2265, 933, 934, + /* 2710 */ 935, 2670, 2263, 840, 937, 2705, 939, 2261, 941, 2258, + /* 2720 */ 943, 945, 938, 2238, 947, 942, 949, 946, 841, 1468, + /* 2730 */ 951, 2211, 1456, 955, 2181, 373, 2704, 2236, 1918, 2743, + /* 2740 */ 2705, 957, 960, 395, 2706, 844, 2708, 2709, 839, 385, + /* 2750 */ 859, 2181, 961, 841, 2181, 2181, 2723, 2181, 2181, 2704, + /* 2760 */ 2181, 2181, 2743, 2181, 2181, 2181, 411, 2706, 844, 2708, + /* 2770 */ 2709, 839, 2670, 859, 840, 2181, 2181, 2181, 2181, 2181, + /* 2780 */ 2181, 2723, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2790 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2670, 2181, 840, + /* 2800 */ 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2810 */ 2181, 2181, 2181, 2181, 841, 2181, 2181, 2181, 2181, 2181, + /* 2820 */ 2704, 2181, 2705, 2743, 2181, 2181, 2181, 412, 2706, 844, + /* 2830 */ 2708, 2709, 839, 2181, 859, 841, 2181, 2181, 2181, 2181, + /* 2840 */ 2181, 2181, 2723, 2181, 2181, 2704, 2181, 2181, 2743, 2181, + /* 2850 */ 2181, 2181, 2717, 2706, 844, 2708, 2709, 839, 2670, 859, + /* 2860 */ 840, 2181, 2181, 2723, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2870 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2670, + /* 2880 */ 2181, 840, 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2890 */ 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, 2181, + /* 2900 */ 2181, 2181, 2181, 2181, 2181, 2181, 2704, 2181, 2181, 2743, + /* 2910 */ 2181, 2181, 2181, 2716, 2706, 844, 2708, 2709, 839, 2181, + /* 2920 */ 859, 2181, 2181, 2181, 2723, 2181, 2181, 2704, 2181, 2181, + /* 2930 */ 2743, 2181, 2181, 2181, 2715, 2706, 844, 2708, 2709, 839, + /* 2940 */ 2670, 859, 840, 2181, 2705, 2181, 2181, 2181, 2181, 2181, + /* 2950 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, + /* 2960 */ 2181, 2181, 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, + /* 2970 */ 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, 2181, + /* 2980 */ 2181, 2181, 2181, 2181, 2181, 2723, 2181, 2181, 2704, 2181, + /* 2990 */ 2181, 2743, 2181, 2181, 2181, 430, 2706, 844, 2708, 2709, + /* 3000 */ 839, 2670, 859, 840, 2723, 2181, 2181, 2181, 2181, 2181, + /* 3010 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3020 */ 2670, 2181, 840, 2181, 2705, 2181, 2181, 2181, 2181, 2181, + /* 3030 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2181, + /* 3040 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2704, + /* 3050 */ 2181, 2181, 2743, 2181, 2181, 2181, 431, 2706, 844, 2708, + /* 3060 */ 2709, 839, 2181, 859, 2181, 2723, 2181, 2181, 2704, 2181, + /* 3070 */ 2181, 2743, 2181, 2181, 2181, 427, 2706, 844, 2708, 2709, + /* 3080 */ 839, 2670, 859, 840, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3090 */ 2181, 2181, 2181, 2705, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3100 */ 2181, 2181, 2181, 2181, 2181, 2181, 841, 2181, 2705, 2181, + /* 3110 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3120 */ 2181, 841, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2704, + /* 3130 */ 2181, 2181, 2743, 2181, 2723, 2181, 432, 2706, 844, 2708, + /* 3140 */ 2709, 839, 2181, 859, 2181, 2181, 2181, 2181, 2181, 2723, + /* 3150 */ 2670, 2181, 840, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3160 */ 2181, 2181, 2181, 2181, 2181, 2670, 2181, 840, 2181, 2181, + /* 3170 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3180 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, + /* 3190 */ 2181, 2181, 2181, 2181, 2181, 2181, 2181, 2181, 842, 2181, + /* 3200 */ 2181, 2743, 2181, 2181, 2181, 401, 2706, 844, 2708, 2709, + /* 3210 */ 839, 2181, 859, 2704, 2181, 2181, 2743, 2181, 2181, 2181, + /* 3220 */ 400, 2706, 844, 2708, 2709, 839, 2181, 859, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 506, 507, 438, 379, 386, 391, 421, 389, 390, 519, @@ -681,149 +1055,149 @@ static const YYCODETYPE yy_lookahead[] = { /* 1300 */ 263, 264, 265, 266, 267, 268, 269, 270, 12, 13, /* 1310 */ 379, 379, 110, 478, 391, 392, 20, 379, 22, 391, /* 1320 */ 392, 379, 379, 436, 392, 534, 420, 463, 110, 13, - /* 1330 */ 379, 35, 436, 37, 411, 433, 0, 431, 436, 411, + /* 1330 */ 379, 35, 436, 37, 411, 433, 33, 431, 436, 411, /* 1340 */ 379, 436, 124, 125, 126, 127, 128, 129, 130, 131, /* 1350 */ 132, 133, 420, 135, 136, 137, 138, 139, 140, 141, /* 1360 */ 433, 379, 66, 436, 75, 76, 77, 436, 436, 33, - /* 1370 */ 438, 82, 83, 84, 436, 33, 80, 88, 436, 436, + /* 1370 */ 438, 82, 83, 84, 436, 552, 80, 88, 436, 436, /* 1380 */ 420, 517, 93, 94, 95, 96, 420, 436, 99, 525, - /* 1390 */ 33, 420, 103, 104, 105, 106, 80, 436, 0, 439, - /* 1400 */ 433, 391, 392, 436, 37, 439, 110, 543, 544, 113, + /* 1390 */ 0, 420, 103, 104, 105, 106, 80, 436, 42, 439, + /* 1400 */ 433, 391, 392, 436, 0, 439, 110, 543, 544, 113, /* 1410 */ 439, 413, 548, 549, 416, 213, 484, 215, 436, 487, - /* 1420 */ 382, 383, 0, 491, 492, 493, 494, 495, 496, 116, + /* 1420 */ 382, 383, 66, 491, 492, 493, 494, 495, 496, 116, /* 1430 */ 498, 116, 119, 116, 119, 503, 119, 505, 12, 13, - /* 1440 */ 116, 509, 510, 119, 22, 149, 150, 80, 22, 13, - /* 1450 */ 52, 249, 250, 231, 13, 233, 114, 0, 0, 0, + /* 1440 */ 0, 509, 510, 53, 116, 149, 150, 119, 22, 33, + /* 1450 */ 114, 249, 250, 33, 13, 13, 52, 231, 49, 233, /* 1460 */ 35, 35, 379, 37, 318, 263, 264, 265, 266, 267, - /* 1470 */ 268, 269, 251, 37, 251, 392, 37, 52, 37, 22, - /* 1480 */ 22, 22, 149, 150, 188, 189, 61, 62, 63, 64, - /* 1490 */ 37, 66, 66, 552, 198, 199, 241, 520, 12, 13, - /* 1500 */ 8, 9, 33, 420, 12, 13, 14, 15, 16, 213, - /* 1510 */ 395, 215, 12, 13, 33, 33, 33, 33, 33, 436, - /* 1520 */ 33, 438, 420, 513, 514, 515, 408, 517, 518, 33, - /* 1530 */ 33, 1, 2, 80, 33, 33, 408, 112, 49, 449, - /* 1540 */ 115, 449, 33, 33, 390, 249, 250, 251, 540, 253, + /* 1470 */ 268, 269, 251, 33, 251, 392, 0, 52, 37, 37, + /* 1480 */ 0, 149, 150, 37, 188, 189, 61, 62, 63, 64, + /* 1490 */ 0, 66, 66, 0, 198, 199, 241, 520, 22, 395, + /* 1500 */ 8, 9, 22, 420, 12, 13, 14, 15, 16, 213, + /* 1510 */ 33, 215, 22, 420, 33, 22, 33, 13, 33, 436, + /* 1520 */ 33, 438, 113, 513, 514, 515, 80, 517, 518, 33, + /* 1530 */ 114, 408, 33, 408, 114, 33, 449, 112, 12, 13, + /* 1540 */ 115, 37, 1, 2, 33, 249, 250, 251, 390, 253, /* 1550 */ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, /* 1560 */ 264, 265, 266, 267, 268, 269, 270, 484, 33, 1, /* 1570 */ 487, 33, 12, 13, 491, 492, 493, 494, 495, 496, - /* 1580 */ 33, 498, 463, 114, 12, 13, 503, 19, 505, 12, - /* 1590 */ 13, 33, 509, 510, 379, 114, 114, 114, 114, 114, - /* 1600 */ 33, 114, 113, 35, 33, 12, 13, 392, 183, 13, - /* 1610 */ 114, 114, 12, 13, 540, 114, 114, 192, 540, 51, - /* 1620 */ 52, 196, 197, 114, 114, 12, 13, 202, 203, 61, - /* 1630 */ 62, 63, 64, 37, 66, 420, 517, 12, 13, 213, - /* 1640 */ 33, 215, 12, 13, 525, 33, 221, 12, 13, 114, - /* 1650 */ 462, 436, 114, 438, 215, 13, 540, 395, 449, 392, - /* 1660 */ 435, 114, 543, 544, 470, 449, 449, 548, 549, 0, - /* 1670 */ 545, 379, 114, 247, 248, 249, 524, 320, 511, 37, - /* 1680 */ 112, 114, 190, 115, 392, 114, 524, 410, 4, 263, - /* 1690 */ 264, 265, 266, 267, 268, 269, 527, 464, 299, 484, - /* 1700 */ 52, 42, 487, 19, 379, 486, 491, 492, 493, 494, - /* 1710 */ 495, 496, 420, 498, 485, 147, 20, 392, 475, 35, - /* 1720 */ 505, 114, 53, 230, 509, 510, 114, 480, 436, 400, - /* 1730 */ 438, 475, 400, 211, 379, 466, 52, 20, 391, 20, - /* 1740 */ 392, 392, 45, 59, 60, 420, 445, 392, 445, 187, - /* 1750 */ 66, 379, 442, 391, 445, 111, 392, 404, 109, 391, - /* 1760 */ 192, 436, 194, 438, 392, 197, 391, 391, 442, 442, - /* 1770 */ 202, 108, 442, 403, 391, 420, 484, 391, 391, 487, - /* 1780 */ 402, 384, 20, 491, 492, 493, 494, 495, 496, 221, - /* 1790 */ 498, 436, 420, 438, 50, 388, 112, 505, 384, 115, - /* 1800 */ 388, 509, 510, 475, 400, 400, 20, 438, 436, 484, - /* 1810 */ 438, 400, 487, 20, 393, 20, 491, 492, 493, 494, - /* 1820 */ 495, 496, 393, 498, 465, 20, 463, 400, 379, 463, - /* 1830 */ 505, 400, 400, 456, 509, 510, 20, 400, 450, 484, - /* 1840 */ 400, 392, 487, 391, 400, 379, 491, 492, 493, 494, - /* 1850 */ 495, 496, 384, 498, 420, 420, 484, 382, 392, 487, - /* 1860 */ 382, 384, 420, 491, 492, 493, 494, 495, 496, 420, - /* 1870 */ 498, 420, 234, 479, 420, 420, 420, 505, 113, 391, - /* 1880 */ 517, 420, 510, 517, 420, 436, 420, 438, 525, 398, - /* 1890 */ 420, 525, 420, 538, 539, 477, 436, 20, 436, 436, - /* 1900 */ 219, 218, 436, 475, 438, 472, 543, 544, 391, 543, - /* 1910 */ 544, 548, 549, 398, 548, 549, 471, 474, 438, 315, - /* 1920 */ 536, 307, 533, 306, 457, 379, 436, 461, 533, 464, - /* 1930 */ 457, 204, 317, 484, 533, 535, 487, 316, 392, 531, - /* 1940 */ 491, 492, 493, 494, 495, 496, 300, 498, 532, 530, - /* 1950 */ 484, 295, 294, 487, 379, 324, 553, 491, 492, 493, - /* 1960 */ 494, 495, 496, 464, 498, 392, 420, 392, 321, 523, - /* 1970 */ 522, 547, 319, 20, 123, 528, 546, 297, 393, 398, - /* 1980 */ 398, 457, 436, 457, 438, 490, 436, 436, 539, 436, - /* 1990 */ 436, 436, 196, 454, 450, 420, 398, 526, 113, 436, - /* 2000 */ 398, 436, 508, 196, 398, 416, 450, 461, 451, 398, - /* 2010 */ 392, 436, 436, 438, 436, 379, 436, 113, 398, 436, - /* 2020 */ 436, 22, 436, 436, 436, 391, 436, 436, 392, 38, - /* 2030 */ 484, 436, 381, 487, 384, 436, 467, 491, 492, 493, - /* 2040 */ 494, 495, 496, 377, 498, 436, 436, 385, 425, 483, - /* 2050 */ 476, 379, 436, 399, 422, 436, 420, 414, 436, 484, - /* 2060 */ 436, 458, 487, 436, 392, 436, 491, 492, 493, 494, - /* 2070 */ 495, 496, 436, 498, 438, 436, 436, 436, 414, 414, - /* 2080 */ 0, 0, 0, 45, 458, 0, 37, 240, 37, 37, - /* 2090 */ 37, 0, 420, 240, 37, 37, 240, 37, 0, 240, - /* 2100 */ 0, 37, 0, 37, 0, 22, 0, 37, 436, 235, - /* 2110 */ 438, 221, 0, 221, 215, 222, 213, 542, 0, 0, - /* 2120 */ 484, 0, 0, 487, 209, 208, 0, 491, 492, 493, - /* 2130 */ 494, 495, 496, 0, 498, 154, 49, 49, 0, 0, - /* 2140 */ 379, 0, 37, 0, 37, 52, 49, 0, 45, 0, - /* 2150 */ 0, 0, 0, 392, 37, 173, 484, 49, 0, 487, - /* 2160 */ 0, 0, 0, 491, 492, 493, 494, 495, 496, 379, - /* 2170 */ 498, 0, 500, 0, 173, 0, 0, 0, 0, 0, + /* 1580 */ 33, 498, 463, 33, 12, 13, 503, 19, 505, 12, + /* 1590 */ 13, 114, 509, 510, 379, 114, 33, 114, 33, 114, + /* 1600 */ 33, 114, 449, 35, 12, 13, 33, 392, 183, 540, + /* 1610 */ 114, 540, 540, 114, 12, 13, 114, 192, 462, 51, + /* 1620 */ 52, 196, 197, 320, 33, 114, 37, 202, 203, 61, + /* 1630 */ 62, 63, 64, 33, 66, 420, 517, 540, 395, 213, + /* 1640 */ 485, 215, 12, 13, 525, 13, 221, 12, 13, 114, + /* 1650 */ 449, 436, 114, 438, 12, 13, 12, 13, 37, 12, + /* 1660 */ 13, 114, 543, 544, 114, 392, 470, 548, 549, 37, + /* 1670 */ 435, 379, 524, 247, 248, 249, 449, 114, 449, 114, + /* 1680 */ 112, 114, 190, 115, 392, 524, 545, 114, 4, 263, + /* 1690 */ 264, 265, 266, 267, 268, 269, 511, 527, 410, 484, + /* 1700 */ 299, 80, 487, 19, 379, 114, 491, 492, 493, 494, + /* 1710 */ 495, 496, 420, 498, 114, 147, 464, 392, 52, 35, + /* 1720 */ 505, 20, 486, 20, 509, 510, 391, 230, 436, 475, + /* 1730 */ 438, 480, 475, 400, 379, 211, 52, 400, 466, 391, + /* 1740 */ 20, 392, 45, 59, 60, 420, 445, 392, 187, 392, + /* 1750 */ 66, 379, 445, 442, 392, 391, 391, 445, 404, 111, + /* 1760 */ 192, 436, 194, 438, 392, 197, 442, 109, 442, 442, + /* 1770 */ 202, 403, 391, 391, 391, 420, 484, 108, 402, 487, + /* 1780 */ 391, 384, 391, 491, 492, 493, 494, 495, 496, 221, + /* 1790 */ 498, 436, 420, 438, 20, 50, 112, 505, 388, 115, + /* 1800 */ 388, 509, 510, 384, 215, 475, 400, 400, 436, 484, + /* 1810 */ 438, 20, 487, 438, 400, 20, 491, 492, 493, 494, + /* 1820 */ 495, 496, 393, 498, 20, 465, 463, 400, 379, 463, + /* 1830 */ 505, 393, 400, 20, 509, 510, 456, 400, 20, 484, + /* 1840 */ 384, 392, 487, 450, 400, 379, 491, 492, 493, 494, + /* 1850 */ 495, 496, 400, 498, 391, 400, 484, 384, 392, 487, + /* 1860 */ 382, 382, 391, 491, 492, 493, 494, 495, 496, 420, + /* 1870 */ 498, 420, 436, 420, 420, 436, 113, 505, 420, 420, + /* 1880 */ 517, 420, 510, 517, 420, 436, 420, 438, 525, 420, + /* 1890 */ 420, 525, 420, 538, 539, 420, 436, 234, 475, 477, + /* 1900 */ 479, 398, 436, 20, 438, 474, 543, 544, 219, 543, + /* 1910 */ 544, 548, 549, 218, 548, 549, 398, 472, 471, 391, + /* 1920 */ 438, 464, 436, 307, 306, 379, 315, 461, 533, 533, + /* 1930 */ 536, 457, 204, 484, 535, 533, 487, 317, 392, 316, + /* 1940 */ 491, 492, 493, 494, 495, 496, 457, 498, 530, 532, + /* 1950 */ 484, 300, 464, 487, 379, 531, 295, 491, 492, 493, + /* 1960 */ 494, 495, 496, 324, 498, 294, 420, 392, 553, 319, + /* 1970 */ 321, 523, 522, 392, 20, 547, 546, 123, 297, 393, + /* 1980 */ 398, 490, 436, 398, 438, 436, 457, 436, 539, 436, + /* 1990 */ 528, 526, 436, 457, 436, 420, 196, 454, 436, 398, + /* 2000 */ 113, 398, 450, 508, 196, 436, 451, 461, 398, 450, + /* 2010 */ 416, 436, 398, 438, 392, 379, 436, 113, 22, 436, + /* 2020 */ 436, 38, 425, 436, 436, 391, 436, 381, 392, 436, + /* 2030 */ 484, 436, 436, 487, 436, 436, 398, 491, 492, 493, + /* 2040 */ 494, 495, 496, 436, 498, 436, 467, 385, 436, 436, + /* 2050 */ 476, 379, 384, 436, 483, 436, 420, 414, 399, 484, + /* 2060 */ 436, 436, 487, 436, 392, 436, 491, 492, 493, 494, + /* 2070 */ 495, 496, 436, 498, 438, 422, 436, 436, 414, 414, + /* 2080 */ 0, 377, 0, 0, 458, 45, 458, 0, 37, 240, + /* 2090 */ 37, 37, 420, 37, 0, 240, 37, 37, 240, 37, + /* 2100 */ 0, 0, 240, 0, 37, 0, 37, 0, 436, 0, + /* 2110 */ 438, 22, 37, 235, 0, 221, 0, 542, 221, 213, + /* 2120 */ 484, 222, 215, 487, 0, 0, 0, 491, 492, 493, + /* 2130 */ 494, 495, 496, 209, 498, 208, 0, 0, 154, 49, + /* 2140 */ 379, 49, 0, 37, 0, 0, 0, 37, 52, 0, + /* 2150 */ 0, 49, 0, 392, 173, 37, 484, 45, 0, 487, + /* 2160 */ 0, 0, 49, 491, 492, 493, 494, 495, 496, 379, + /* 2170 */ 498, 0, 500, 0, 0, 0, 0, 173, 0, 0, /* 2180 */ 0, 420, 392, 0, 0, 0, 0, 551, 0, 0, - /* 2190 */ 379, 49, 0, 45, 0, 0, 0, 436, 0, 438, + /* 2190 */ 379, 22, 49, 0, 0, 0, 45, 436, 0, 438, /* 2200 */ 0, 0, 0, 392, 0, 0, 0, 0, 0, 0, - /* 2210 */ 420, 0, 0, 0, 0, 22, 0, 154, 0, 379, - /* 2220 */ 153, 0, 461, 152, 0, 0, 436, 0, 438, 66, - /* 2230 */ 0, 420, 392, 66, 37, 0, 66, 22, 0, 22, - /* 2240 */ 50, 0, 0, 0, 0, 484, 0, 436, 487, 438, - /* 2250 */ 0, 461, 491, 492, 493, 494, 495, 496, 0, 498, - /* 2260 */ 420, 74, 52, 37, 42, 66, 37, 14, 37, 50, - /* 2270 */ 42, 37, 52, 33, 484, 52, 436, 487, 438, 42, - /* 2280 */ 0, 491, 492, 493, 494, 495, 496, 0, 498, 42, - /* 2290 */ 45, 0, 43, 0, 204, 484, 42, 49, 487, 42, + /* 2210 */ 420, 0, 0, 0, 0, 0, 0, 0, 0, 379, + /* 2220 */ 0, 0, 461, 0, 154, 153, 436, 0, 438, 152, + /* 2230 */ 0, 420, 392, 0, 66, 0, 66, 50, 0, 0, + /* 2240 */ 50, 22, 0, 66, 22, 484, 0, 436, 487, 438, + /* 2250 */ 0, 461, 491, 492, 493, 494, 495, 496, 66, 498, + /* 2260 */ 420, 37, 37, 0, 0, 0, 37, 14, 42, 37, + /* 2270 */ 0, 37, 0, 42, 484, 204, 436, 487, 438, 43, + /* 2280 */ 52, 491, 492, 493, 494, 495, 496, 42, 498, 52, + /* 2290 */ 33, 42, 52, 45, 0, 484, 49, 42, 487, 0, /* 2300 */ 49, 0, 491, 492, 493, 494, 495, 496, 49, 498, - /* 2310 */ 49, 0, 49, 379, 0, 0, 0, 0, 37, 52, - /* 2320 */ 42, 0, 37, 52, 484, 42, 392, 487, 0, 37, + /* 2310 */ 42, 0, 0, 379, 0, 49, 49, 0, 74, 0, + /* 2320 */ 0, 37, 42, 52, 484, 0, 392, 487, 37, 52, /* 2330 */ 379, 491, 492, 493, 494, 495, 496, 42, 498, 0, - /* 2340 */ 52, 37, 52, 392, 42, 0, 0, 379, 0, 0, - /* 2350 */ 0, 0, 119, 121, 420, 37, 22, 0, 0, 22, - /* 2360 */ 392, 37, 37, 37, 37, 0, 37, 37, 37, 37, - /* 2370 */ 436, 420, 438, 33, 33, 37, 22, 22, 22, 37, - /* 2380 */ 37, 37, 0, 0, 22, 22, 0, 436, 420, 438, - /* 2390 */ 37, 0, 0, 0, 0, 22, 37, 37, 20, 0, - /* 2400 */ 114, 54, 113, 37, 436, 37, 438, 37, 226, 113, - /* 2410 */ 379, 0, 37, 49, 0, 0, 0, 22, 484, 216, - /* 2420 */ 22, 487, 3, 392, 301, 491, 492, 493, 494, 495, - /* 2430 */ 496, 50, 498, 33, 114, 484, 113, 50, 487, 200, - /* 2440 */ 37, 37, 491, 492, 493, 494, 495, 496, 113, 498, - /* 2450 */ 190, 420, 484, 33, 190, 487, 220, 33, 190, 491, - /* 2460 */ 492, 493, 494, 495, 496, 196, 498, 436, 33, 438, - /* 2470 */ 200, 33, 190, 301, 190, 49, 49, 80, 33, 37, - /* 2480 */ 225, 114, 113, 111, 113, 109, 3, 33, 114, 37, - /* 2490 */ 379, 114, 113, 113, 37, 37, 37, 37, 114, 114, - /* 2500 */ 37, 113, 113, 392, 114, 49, 33, 379, 0, 0, - /* 2510 */ 114, 49, 42, 0, 113, 484, 114, 42, 487, 114, - /* 2520 */ 392, 114, 491, 492, 493, 494, 495, 496, 0, 498, - /* 2530 */ 113, 420, 114, 379, 113, 42, 113, 2, 33, 114, - /* 2540 */ 111, 113, 111, 22, 272, 193, 392, 436, 420, 438, - /* 2550 */ 285, 114, 249, 114, 113, 49, 49, 301, 114, 113, - /* 2560 */ 113, 113, 113, 113, 436, 114, 438, 22, 113, 0, - /* 2570 */ 379, 252, 42, 49, 420, 114, 123, 113, 113, 113, - /* 2580 */ 113, 113, 22, 392, 113, 22, 114, 113, 22, 113, - /* 2590 */ 436, 122, 438, 114, 37, 484, 37, 113, 487, 193, - /* 2600 */ 192, 114, 491, 492, 493, 494, 495, 496, 37, 498, - /* 2610 */ 197, 420, 484, 113, 37, 487, 114, 114, 37, 491, - /* 2620 */ 492, 493, 494, 495, 496, 193, 498, 436, 114, 438, - /* 2630 */ 37, 379, 114, 37, 33, 226, 37, 22, 484, 113, - /* 2640 */ 113, 487, 113, 73, 392, 491, 492, 493, 494, 495, - /* 2650 */ 496, 134, 498, 134, 379, 22, 134, 134, 37, 74, - /* 2660 */ 37, 37, 37, 37, 37, 37, 37, 392, 37, 37, - /* 2670 */ 80, 37, 420, 33, 107, 484, 37, 80, 487, 107, - /* 2680 */ 37, 37, 491, 492, 493, 494, 495, 496, 436, 498, - /* 2690 */ 438, 22, 37, 37, 37, 420, 80, 37, 37, 37, - /* 2700 */ 37, 37, 22, 37, 0, 37, 52, 42, 0, 37, - /* 2710 */ 52, 436, 42, 438, 37, 379, 0, 42, 0, 52, - /* 2720 */ 37, 42, 0, 52, 37, 0, 37, 22, 392, 22, - /* 2730 */ 33, 22, 21, 554, 22, 22, 484, 0, 21, 487, - /* 2740 */ 379, 20, 554, 491, 492, 493, 494, 495, 496, 554, - /* 2750 */ 498, 554, 554, 392, 554, 554, 420, 554, 554, 484, + /* 2340 */ 37, 52, 42, 392, 0, 37, 42, 379, 52, 0, + /* 2350 */ 0, 0, 0, 0, 420, 0, 22, 0, 37, 22, + /* 2360 */ 392, 37, 121, 37, 37, 37, 37, 37, 37, 37, + /* 2370 */ 436, 420, 438, 119, 33, 37, 33, 37, 22, 37, + /* 2380 */ 0, 22, 37, 0, 22, 0, 22, 436, 420, 438, + /* 2390 */ 0, 22, 0, 0, 0, 37, 0, 37, 0, 22, + /* 2400 */ 54, 20, 37, 37, 436, 37, 438, 37, 0, 0, + /* 2410 */ 379, 114, 49, 37, 0, 113, 0, 220, 484, 113, + /* 2420 */ 0, 487, 226, 392, 225, 491, 492, 493, 494, 495, + /* 2430 */ 496, 3, 498, 190, 22, 484, 33, 22, 487, 301, + /* 2440 */ 33, 37, 491, 492, 493, 494, 495, 496, 190, 498, + /* 2450 */ 190, 420, 484, 0, 37, 487, 50, 196, 111, 491, + /* 2460 */ 492, 493, 494, 495, 496, 33, 498, 436, 190, 438, + /* 2470 */ 33, 190, 216, 200, 200, 50, 49, 33, 49, 80, + /* 2480 */ 113, 109, 301, 33, 37, 114, 113, 3, 114, 114, + /* 2490 */ 379, 113, 33, 114, 37, 113, 0, 113, 37, 113, + /* 2500 */ 37, 114, 113, 392, 301, 114, 37, 379, 113, 37, + /* 2510 */ 37, 114, 33, 49, 114, 484, 114, 49, 487, 114, + /* 2520 */ 392, 0, 491, 492, 493, 494, 495, 496, 42, 498, + /* 2530 */ 42, 420, 113, 379, 0, 114, 42, 114, 114, 113, + /* 2540 */ 33, 193, 2, 113, 113, 111, 392, 436, 420, 438, + /* 2550 */ 22, 197, 113, 111, 285, 272, 249, 49, 49, 114, + /* 2560 */ 114, 113, 113, 22, 436, 113, 438, 113, 113, 113, + /* 2570 */ 379, 0, 114, 113, 420, 252, 114, 42, 113, 113, + /* 2580 */ 113, 193, 49, 392, 114, 114, 22, 113, 22, 113, + /* 2590 */ 436, 113, 438, 192, 113, 484, 113, 122, 487, 22, + /* 2600 */ 123, 114, 491, 492, 493, 494, 495, 496, 113, 498, + /* 2610 */ 37, 420, 484, 37, 114, 487, 37, 114, 113, 491, + /* 2620 */ 492, 493, 494, 495, 496, 37, 498, 436, 193, 438, + /* 2630 */ 114, 379, 37, 114, 37, 37, 226, 114, 484, 113, + /* 2640 */ 134, 487, 33, 113, 392, 491, 492, 493, 494, 495, + /* 2650 */ 496, 134, 498, 37, 379, 113, 134, 22, 134, 74, + /* 2660 */ 73, 22, 37, 37, 37, 37, 37, 392, 37, 37, + /* 2670 */ 37, 37, 420, 37, 37, 484, 80, 107, 487, 80, + /* 2680 */ 33, 107, 491, 492, 493, 494, 495, 496, 436, 498, + /* 2690 */ 438, 37, 37, 37, 22, 420, 37, 37, 37, 80, + /* 2700 */ 37, 37, 37, 37, 37, 22, 37, 0, 37, 52, + /* 2710 */ 42, 436, 0, 438, 37, 379, 42, 0, 37, 0, + /* 2720 */ 42, 37, 52, 0, 42, 52, 37, 52, 392, 37, + /* 2730 */ 22, 0, 22, 33, 554, 22, 484, 0, 22, 487, + /* 2740 */ 379, 21, 21, 491, 492, 493, 494, 495, 496, 22, + /* 2750 */ 498, 554, 20, 392, 554, 554, 420, 554, 554, 484, /* 2760 */ 554, 554, 487, 554, 554, 554, 491, 492, 493, 494, /* 2770 */ 495, 496, 436, 498, 438, 554, 554, 554, 554, 554, /* 2780 */ 554, 420, 554, 554, 554, 554, 554, 554, 554, 554, @@ -910,7 +1284,7 @@ static const YYCODETYPE yy_lookahead[] = { /* 3590 */ 376, 376, 376, 376, 376, 376, 376, 376, 376, 376, /* 3600 */ 376, 376, 376, 376, }; -#define YY_SHIFT_COUNT (960) +#define YY_SHIFT_COUNT (962) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (2737) static const unsigned short int yy_shift_ofst[] = { @@ -934,85 +1308,85 @@ static const unsigned short int yy_shift_ofst[] = { /* 170 */ 16, 503, 503, 682, 25, 994, 994, 994, 994, 994, /* 180 */ 994, 1568, 1289, 21, 289, 413, 413, 352, 437, 150, /* 190 */ 210, 299, 260, 205, 293, 6, 6, 360, 950, 993, - /* 200 */ 974, 974, 974, 105, 974, 816, 773, 1221, 1174, 1139, - /* 210 */ 882, 1221, 1221, 1223, 1316, 1316, 1146, 870, 727, 617, - /* 220 */ 1399, 1648, 1659, 1696, 1493, 261, 1696, 261, 1522, 1717, - /* 230 */ 1719, 1697, 1719, 1697, 1562, 1717, 1719, 1717, 1697, 1562, - /* 240 */ 1562, 1562, 1644, 1649, 1717, 1717, 1663, 1717, 1717, 1717, - /* 250 */ 1762, 1744, 1762, 1744, 1696, 261, 261, 1786, 261, 1793, - /* 260 */ 1795, 261, 1793, 261, 1805, 261, 1816, 261, 261, 1717, - /* 270 */ 261, 1762, 16, 16, 16, 16, 16, 16, 16, 16, - /* 280 */ 16, 16, 16, 1717, 25, 25, 1762, 503, 503, 503, - /* 290 */ 1638, 1765, 1696, 404, 1877, 1681, 1683, 1786, 404, 1399, - /* 300 */ 1717, 503, 1614, 1617, 1614, 1617, 1604, 1727, 1614, 1615, - /* 310 */ 1621, 1646, 1399, 1656, 1658, 1631, 1647, 1653, 1719, 1953, - /* 320 */ 1851, 1680, 1793, 404, 404, 1617, 503, 503, 503, 503, - /* 330 */ 1617, 503, 1796, 404, 503, 1816, 404, 1885, 503, 1807, - /* 340 */ 1816, 404, 682, 404, 1719, 503, 503, 503, 503, 503, + /* 200 */ 974, 974, 974, 105, 974, 816, 773, 1356, 1221, 1174, + /* 210 */ 1139, 882, 1221, 1221, 1223, 1316, 1316, 1146, 870, 727, + /* 220 */ 617, 1401, 1666, 1701, 1703, 1497, 261, 1703, 261, 1524, + /* 230 */ 1701, 1720, 1697, 1720, 1697, 1561, 1701, 1720, 1701, 1697, + /* 240 */ 1561, 1561, 1561, 1648, 1658, 1701, 1701, 1669, 1701, 1701, + /* 250 */ 1701, 1774, 1745, 1774, 1745, 1703, 261, 261, 1791, 261, + /* 260 */ 1795, 1804, 261, 1795, 261, 1813, 261, 1818, 261, 261, + /* 270 */ 1701, 261, 1774, 16, 16, 16, 16, 16, 16, 16, + /* 280 */ 16, 16, 16, 16, 1701, 25, 25, 1774, 503, 503, + /* 290 */ 503, 1663, 1763, 1703, 404, 1883, 1689, 1695, 1791, 404, + /* 300 */ 1401, 1701, 503, 1616, 1618, 1616, 1618, 1611, 1728, 1616, + /* 310 */ 1620, 1623, 1651, 1401, 1661, 1671, 1639, 1649, 1650, 1720, + /* 320 */ 1954, 1854, 1681, 1795, 404, 404, 1618, 503, 503, 503, + /* 330 */ 503, 1618, 503, 1800, 404, 503, 1818, 404, 1887, 503, + /* 340 */ 1808, 1818, 404, 682, 404, 1720, 503, 503, 503, 503, /* 350 */ 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - /* 360 */ 503, 503, 503, 503, 503, 503, 503, 1904, 503, 1717, - /* 370 */ 404, 1999, 1991, 1762, 3228, 3228, 3228, 3228, 3228, 3228, - /* 380 */ 3228, 3228, 3228, 3228, 3228, 81, 1425, 359, 1684, 391, - /* 390 */ 17, 558, 63, 707, 1492, 231, 724, 588, 588, 588, - /* 400 */ 588, 588, 588, 588, 588, 588, 750, 610, 464, 66, - /* 410 */ 723, 723, 402, 733, 39, 782, 578, 760, 846, 578, - /* 420 */ 889, 802, 1075, 54, 302, 302, 1231, 1113, 964, 1231, - /* 430 */ 1231, 1231, 1398, 1255, 1342, 605, 1151, 696, 1336, 1313, - /* 440 */ 1315, 1317, 1324, 734, 1436, 1441, 1422, 1457, 1458, 1459, - /* 450 */ 1222, 1469, 1481, 8, 1482, 1485, 1487, 1496, 1333, 1357, - /* 460 */ 621, 1483, 1484, 1497, 1530, 1501, 781, 1502, 1489, 1509, - /* 470 */ 1510, 1535, 1538, 1486, 1500, 1560, 1572, 1577, 1593, 1600, - /* 480 */ 1613, 1625, 1630, 1635, 1547, 1558, 1567, 1571, 1607, 1612, - /* 490 */ 429, 1367, 498, 1439, 1596, 1642, 1453, 1669, 2080, 2081, - /* 500 */ 2082, 2038, 2085, 2049, 1847, 2051, 2052, 2053, 1853, 2091, - /* 510 */ 2057, 2058, 1856, 2060, 2098, 1859, 2100, 2064, 2102, 2066, - /* 520 */ 2104, 2083, 2106, 2070, 1874, 2118, 1890, 2112, 1892, 1893, - /* 530 */ 1899, 1903, 2119, 2121, 2122, 1915, 1917, 2126, 2133, 1981, - /* 540 */ 2087, 2088, 2138, 2105, 2139, 2141, 2107, 2093, 2143, 2097, - /* 550 */ 2147, 2103, 2149, 2150, 2151, 2108, 2152, 2158, 2160, 2161, - /* 560 */ 2162, 2171, 1982, 2117, 2173, 2001, 2175, 2176, 2177, 2178, - /* 570 */ 2179, 2180, 2183, 2184, 2185, 2186, 2188, 2189, 2198, 2200, - /* 580 */ 2201, 2202, 2204, 2205, 2206, 2207, 2142, 2192, 2148, 2194, - /* 590 */ 2195, 2196, 2208, 2209, 2211, 2212, 2213, 2214, 2193, 2216, - /* 600 */ 2063, 2218, 2067, 2221, 2071, 2224, 2225, 2215, 2190, 2217, - /* 610 */ 2219, 2227, 2163, 2230, 2167, 2197, 2235, 2170, 2238, 2199, - /* 620 */ 2241, 2242, 2226, 2210, 2222, 2243, 2229, 2220, 2228, 2244, - /* 630 */ 2231, 2223, 2237, 2246, 2234, 2250, 2245, 2247, 2240, 2248, - /* 640 */ 2251, 2253, 2261, 2258, 2249, 2254, 2280, 2287, 2291, 2293, - /* 650 */ 2257, 2090, 2301, 2248, 2259, 2311, 2248, 2263, 2314, 2315, - /* 660 */ 2187, 2316, 2317, 2281, 2267, 2278, 2321, 2285, 2271, 2283, - /* 670 */ 2328, 2292, 2288, 2295, 2339, 2304, 2290, 2302, 2345, 2346, - /* 680 */ 2348, 2349, 2350, 2351, 2232, 2233, 2318, 2334, 2357, 2337, - /* 690 */ 2324, 2325, 2326, 2327, 2329, 2330, 2331, 2332, 2338, 2340, - /* 700 */ 2341, 2342, 2343, 2354, 2344, 2358, 2355, 2365, 2356, 2382, - /* 710 */ 2362, 2347, 2383, 2363, 2353, 2386, 2391, 2392, 2359, 2393, - /* 720 */ 2360, 2394, 2373, 2378, 2366, 2368, 2370, 2286, 2289, 2399, - /* 730 */ 2260, 2182, 2255, 2296, 2236, 2248, 2364, 2411, 2264, 2375, - /* 740 */ 2395, 2414, 2203, 2398, 2268, 2269, 2415, 2416, 2282, 2239, - /* 750 */ 2284, 2270, 2419, 2400, 2123, 2323, 2320, 2335, 2367, 2403, - /* 760 */ 2404, 2369, 2381, 2372, 2387, 2376, 2374, 2420, 2424, 2377, - /* 770 */ 2371, 2379, 2380, 2384, 2435, 2426, 2427, 2388, 2438, 2172, - /* 780 */ 2397, 2385, 2445, 2389, 2442, 2390, 2396, 2483, 2454, 2256, - /* 790 */ 2452, 2457, 2458, 2459, 2460, 2463, 2402, 2405, 2456, 2265, - /* 800 */ 2473, 2462, 2508, 2509, 2401, 2470, 2407, 2418, 2417, 2421, - /* 810 */ 2352, 2423, 2513, 2475, 2413, 2528, 2425, 2428, 2406, 2493, - /* 820 */ 2408, 2505, 2429, 2272, 2431, 2535, 2521, 2303, 2437, 2439, - /* 830 */ 2441, 2446, 2447, 2448, 2449, 2444, 2506, 2450, 2455, 2507, - /* 840 */ 2451, 2545, 2319, 2464, 2465, 2569, 2461, 2466, 2432, 2530, - /* 850 */ 2467, 2469, 2248, 2524, 2468, 2471, 2472, 2474, 2476, 2453, - /* 860 */ 2560, 2563, 2566, 2409, 2479, 2557, 2559, 2484, 2487, 2571, - /* 870 */ 2500, 2502, 2577, 2441, 2503, 2581, 2446, 2514, 2593, 2447, - /* 880 */ 2518, 2596, 2448, 2517, 2519, 2522, 2523, 2526, 2601, 2527, - /* 890 */ 2599, 2529, 2601, 2601, 2615, 2585, 2570, 2633, 2621, 2623, - /* 900 */ 2624, 2625, 2626, 2627, 2628, 2629, 2631, 2632, 2634, 2590, - /* 910 */ 2567, 2597, 2572, 2640, 2639, 2643, 2644, 2669, 2655, 2656, - /* 920 */ 2657, 2616, 2340, 2660, 2341, 2661, 2662, 2663, 2664, 2680, - /* 930 */ 2666, 2704, 2668, 2654, 2665, 2708, 2672, 2658, 2670, 2716, - /* 940 */ 2677, 2667, 2675, 2718, 2683, 2671, 2679, 2722, 2687, 2725, - /* 950 */ 2705, 2689, 2737, 2707, 2697, 2709, 2711, 2712, 2713, 2717, - /* 960 */ 2721, + /* 360 */ 503, 503, 503, 503, 503, 503, 503, 503, 1904, 503, + /* 370 */ 1701, 404, 1996, 1983, 1774, 3228, 3228, 3228, 3228, 3228, + /* 380 */ 3228, 3228, 3228, 3228, 3228, 3228, 81, 1425, 359, 1684, + /* 390 */ 391, 17, 558, 63, 707, 1492, 231, 724, 588, 588, + /* 400 */ 588, 588, 588, 588, 588, 588, 588, 750, 610, 464, + /* 410 */ 66, 723, 723, 402, 733, 39, 782, 578, 760, 846, + /* 420 */ 578, 889, 802, 1075, 54, 302, 302, 1231, 1113, 964, + /* 430 */ 1231, 1231, 1231, 1404, 1255, 1336, 605, 1151, 696, 1440, + /* 440 */ 1313, 1315, 1317, 1328, 734, 1441, 1442, 1476, 1480, 1490, + /* 450 */ 1493, 1226, 1416, 1420, 8, 1477, 1481, 1485, 1487, 1332, + /* 460 */ 1303, 621, 1483, 1496, 1499, 1541, 1502, 781, 1511, 1409, + /* 470 */ 1535, 1538, 1547, 1550, 1526, 1560, 1572, 1577, 1592, 1602, + /* 480 */ 1630, 1635, 1642, 1644, 1647, 1563, 1565, 1567, 1573, 1591, + /* 490 */ 1600, 429, 1446, 498, 1589, 1504, 1632, 1621, 1390, 2080, + /* 500 */ 2082, 2083, 2040, 2087, 2051, 1849, 2053, 2054, 2056, 1855, + /* 510 */ 2094, 2059, 2060, 1858, 2062, 2100, 2101, 1862, 2103, 2067, + /* 520 */ 2105, 2069, 2107, 2089, 2109, 2075, 1878, 2114, 1894, 2116, + /* 530 */ 1897, 1899, 1907, 1906, 2124, 2125, 2126, 1924, 1927, 2136, + /* 540 */ 2137, 1984, 2090, 2092, 2142, 2106, 2144, 2145, 2110, 2096, + /* 550 */ 2146, 2102, 2149, 2112, 2150, 2152, 2158, 2113, 2160, 2161, + /* 560 */ 2171, 2173, 2174, 2175, 1981, 2118, 2176, 2004, 2178, 2179, + /* 570 */ 2180, 2183, 2184, 2185, 2186, 2188, 2189, 2198, 2200, 2201, + /* 580 */ 2202, 2204, 2205, 2206, 2207, 2208, 2209, 2211, 2143, 2193, + /* 590 */ 2151, 2194, 2195, 2212, 2213, 2214, 2215, 2216, 2217, 2218, + /* 600 */ 2169, 2220, 2070, 2221, 2072, 2223, 2077, 2227, 2230, 2219, + /* 610 */ 2187, 2222, 2190, 2233, 2168, 2235, 2170, 2224, 2238, 2177, + /* 620 */ 2239, 2192, 2242, 2246, 2225, 2228, 2226, 2250, 2229, 2237, + /* 630 */ 2231, 2263, 2232, 2240, 2245, 2264, 2234, 2265, 2248, 2249, + /* 640 */ 2257, 2247, 2251, 2253, 2259, 2270, 2236, 2255, 2272, 2294, + /* 650 */ 2299, 2301, 2268, 2071, 2311, 2247, 2266, 2312, 2247, 2267, + /* 660 */ 2314, 2317, 2244, 2319, 2320, 2284, 2271, 2280, 2325, 2291, + /* 670 */ 2277, 2295, 2339, 2303, 2289, 2300, 2344, 2308, 2296, 2304, + /* 680 */ 2349, 2350, 2351, 2352, 2353, 2355, 2241, 2254, 2321, 2334, + /* 690 */ 2357, 2337, 2324, 2326, 2327, 2328, 2329, 2330, 2331, 2332, + /* 700 */ 2338, 2341, 2343, 2340, 2342, 2356, 2345, 2380, 2359, 2383, + /* 710 */ 2362, 2385, 2364, 2346, 2390, 2369, 2358, 2392, 2393, 2394, + /* 720 */ 2360, 2396, 2365, 2398, 2377, 2381, 2366, 2368, 2370, 2297, + /* 730 */ 2302, 2408, 2243, 2196, 2199, 2306, 2197, 2247, 2363, 2409, + /* 740 */ 2258, 2376, 2412, 2414, 2256, 2415, 2260, 2261, 2416, 2420, + /* 750 */ 2278, 2273, 2281, 2274, 2428, 2403, 2138, 2367, 2371, 2373, + /* 760 */ 2374, 2404, 2417, 2378, 2406, 2347, 2425, 2372, 2375, 2407, + /* 770 */ 2432, 2379, 2382, 2384, 2386, 2387, 2437, 2427, 2429, 2389, + /* 780 */ 2444, 2181, 2399, 2391, 2450, 2395, 2447, 2397, 2400, 2484, + /* 790 */ 2459, 2203, 2457, 2461, 2463, 2469, 2472, 2473, 2402, 2405, + /* 800 */ 2464, 2269, 2479, 2468, 2453, 2496, 2419, 2486, 2421, 2423, + /* 810 */ 2426, 2430, 2348, 2431, 2521, 2488, 2354, 2534, 2424, 2439, + /* 820 */ 2388, 2494, 2401, 2507, 2434, 2283, 2442, 2540, 2528, 2307, + /* 830 */ 2445, 2446, 2448, 2449, 2452, 2454, 2455, 2458, 2508, 2456, + /* 840 */ 2460, 2509, 2462, 2541, 2323, 2465, 2466, 2571, 2470, 2467, + /* 850 */ 2435, 2535, 2474, 2475, 2247, 2533, 2476, 2478, 2471, 2481, + /* 860 */ 2483, 2477, 2564, 2566, 2577, 2410, 2487, 2573, 2576, 2495, + /* 870 */ 2500, 2579, 2505, 2503, 2588, 2448, 2516, 2595, 2449, 2519, + /* 880 */ 2597, 2452, 2523, 2598, 2454, 2506, 2517, 2522, 2524, 2526, + /* 890 */ 2609, 2530, 2616, 2542, 2609, 2609, 2635, 2585, 2587, 2639, + /* 900 */ 2625, 2626, 2627, 2628, 2629, 2631, 2632, 2633, 2634, 2636, + /* 910 */ 2637, 2596, 2570, 2599, 2574, 2647, 2654, 2655, 2656, 2672, + /* 920 */ 2659, 2660, 2661, 2619, 2341, 2663, 2343, 2664, 2665, 2666, + /* 930 */ 2667, 2683, 2669, 2707, 2671, 2657, 2668, 2712, 2677, 2670, + /* 940 */ 2674, 2717, 2681, 2673, 2678, 2719, 2684, 2675, 2682, 2723, + /* 950 */ 2689, 2737, 2708, 2692, 2731, 2710, 2700, 2713, 2720, 2716, + /* 960 */ 2727, 2721, 2732, }; -#define YY_REDUCE_COUNT (384) +#define YY_REDUCE_COUNT (385) #define YY_REDUCE_MIN (-510) #define YY_REDUCE_MAX (2729) static const short yy_reduce_ofst[] = { @@ -1034,126 +1408,126 @@ static const short yy_reduce_ofst[] = { /* 150 */ 618, 666, 680, -475, -378, 336, 434, 460, 715, -133, /* 160 */ 865, 234, 749, 835, 960, 966, 779, 906, -92, 902, /* 170 */ 971, 927, 967, 998, 1038, -415, 469, 561, 568, 637, - /* 180 */ 685, 381, 731, 756, 785, 661, 661, 941, 718, 791, - /* 190 */ 977, 1115, 661, 1102, 1102, 1118, 1128, 1090, 1154, 1092, - /* 200 */ 1008, 1074, 1078, 1188, 1116, 1102, 1262, 1209, 1267, 1225, - /* 210 */ 1194, 1216, 1217, 1102, 1152, 1162, 1125, 1167, 1169, 1277, - /* 220 */ 1233, 1219, 1229, 1243, 1247, 1329, 1256, 1332, 1269, 1347, - /* 230 */ 1348, 1301, 1349, 1303, 1310, 1362, 1364, 1368, 1309, 1326, - /* 240 */ 1327, 1330, 1353, 1370, 1375, 1376, 1378, 1383, 1386, 1387, - /* 250 */ 1397, 1407, 1414, 1412, 1328, 1404, 1405, 1369, 1411, 1421, - /* 260 */ 1359, 1427, 1429, 1431, 1377, 1432, 1388, 1437, 1440, 1452, - /* 270 */ 1444, 1468, 1434, 1435, 1442, 1451, 1454, 1455, 1456, 1461, - /* 280 */ 1464, 1470, 1472, 1488, 1475, 1478, 1477, 1460, 1462, 1463, - /* 290 */ 1394, 1418, 1428, 1491, 1443, 1433, 1445, 1480, 1515, 1465, - /* 300 */ 1517, 1490, 1389, 1467, 1395, 1473, 1384, 1400, 1401, 1416, - /* 310 */ 1408, 1419, 1499, 1446, 1448, 1403, 1424, 1430, 1573, 1495, - /* 320 */ 1447, 1471, 1585, 1581, 1582, 1524, 1550, 1551, 1553, 1554, - /* 330 */ 1526, 1555, 1539, 1598, 1563, 1544, 1602, 1494, 1565, 1557, - /* 340 */ 1556, 1606, 1589, 1611, 1618, 1576, 1578, 1580, 1583, 1584, - /* 350 */ 1586, 1587, 1588, 1590, 1591, 1595, 1599, 1609, 1610, 1616, - /* 360 */ 1619, 1622, 1624, 1627, 1629, 1639, 1640, 1623, 1641, 1634, - /* 370 */ 1620, 1651, 1662, 1650, 1569, 1566, 1574, 1603, 1626, 1643, - /* 380 */ 1664, 1632, 1665, 1654, 1666, + /* 180 */ 685, 381, 731, 756, 785, 661, 661, 823, 718, 791, + /* 190 */ 977, 1104, 661, 1093, 1093, 1123, 1125, 1087, 1158, 1153, + /* 200 */ 1069, 1071, 1072, 1156, 1097, 1093, 1243, 1155, 1201, 1273, + /* 210 */ 1235, 1196, 1227, 1229, 1093, 1148, 1161, 1141, 1185, 1170, + /* 220 */ 1288, 1252, 1236, 1335, 1254, 1251, 1333, 1257, 1337, 1272, + /* 230 */ 1348, 1349, 1301, 1357, 1307, 1311, 1364, 1362, 1365, 1312, + /* 240 */ 1324, 1326, 1327, 1354, 1368, 1381, 1382, 1376, 1383, 1389, + /* 250 */ 1391, 1397, 1410, 1419, 1412, 1330, 1406, 1407, 1375, 1414, + /* 260 */ 1429, 1360, 1427, 1438, 1432, 1380, 1437, 1393, 1444, 1452, + /* 270 */ 1463, 1455, 1456, 1451, 1453, 1454, 1458, 1459, 1461, 1464, + /* 280 */ 1469, 1470, 1472, 1475, 1471, 1478, 1479, 1473, 1436, 1439, + /* 290 */ 1460, 1421, 1422, 1423, 1503, 1431, 1445, 1447, 1482, 1518, + /* 300 */ 1457, 1528, 1486, 1395, 1474, 1396, 1489, 1394, 1399, 1402, + /* 310 */ 1417, 1424, 1418, 1488, 1448, 1450, 1415, 1428, 1430, 1581, + /* 320 */ 1491, 1462, 1465, 1586, 1582, 1585, 1529, 1549, 1551, 1553, + /* 330 */ 1556, 1536, 1558, 1543, 1601, 1562, 1552, 1603, 1495, 1569, + /* 340 */ 1555, 1559, 1610, 1594, 1614, 1622, 1580, 1583, 1584, 1587, + /* 350 */ 1588, 1590, 1593, 1595, 1596, 1598, 1599, 1607, 1609, 1612, + /* 360 */ 1613, 1617, 1619, 1624, 1625, 1627, 1629, 1640, 1597, 1641, + /* 370 */ 1634, 1638, 1646, 1662, 1668, 1579, 1571, 1574, 1626, 1628, + /* 380 */ 1643, 1664, 1653, 1665, 1659, 1704, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 10 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 20 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 30 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 40 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 50 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 60 */ 2544, 2176, 2176, 2500, 2176, 2176, 2176, 2176, 2176, 2176, - /* 70 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2507, 2176, - /* 80 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 90 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2277, - /* 100 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 110 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2275, 2795, - /* 120 */ 2176, 2921, 2585, 2176, 2176, 2824, 2176, 2176, 2176, 2176, - /* 130 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 140 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2807, 2176, 2176, - /* 150 */ 2248, 2248, 2176, 2807, 2807, 2807, 2767, 2767, 2275, 2176, - /* 160 */ 2176, 2277, 2176, 2587, 2176, 2176, 2176, 2176, 2176, 2176, - /* 170 */ 2176, 2176, 2176, 2417, 2206, 2176, 2176, 2176, 2176, 2176, - /* 180 */ 2176, 2570, 2176, 2176, 2853, 2799, 2800, 2915, 2176, 2856, - /* 190 */ 2818, 2176, 2813, 2176, 2176, 2176, 2176, 2512, 2176, 2843, - /* 200 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2362, - /* 210 */ 2564, 2176, 2176, 2176, 2176, 2176, 2899, 2797, 2837, 2176, - /* 220 */ 2847, 2176, 2612, 2176, 2601, 2277, 2176, 2277, 2557, 2495, - /* 230 */ 2176, 2505, 2176, 2505, 2502, 2176, 2176, 2176, 2505, 2502, - /* 240 */ 2502, 2502, 2351, 2347, 2176, 2176, 2345, 2176, 2176, 2176, - /* 250 */ 2176, 2231, 2176, 2231, 2176, 2277, 2277, 2176, 2277, 2176, - /* 260 */ 2176, 2277, 2176, 2277, 2176, 2277, 2176, 2277, 2277, 2176, - /* 270 */ 2277, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 280 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 290 */ 2599, 2580, 2176, 2275, 2176, 2568, 2566, 2176, 2275, 2847, - /* 300 */ 2176, 2176, 2869, 2864, 2869, 2864, 2883, 2879, 2869, 2888, - /* 310 */ 2885, 2849, 2847, 2830, 2826, 2918, 2905, 2901, 2176, 2176, - /* 320 */ 2835, 2833, 2176, 2275, 2275, 2864, 2176, 2176, 2176, 2176, - /* 330 */ 2864, 2176, 2176, 2275, 2176, 2176, 2275, 2176, 2176, 2176, - /* 340 */ 2176, 2275, 2176, 2275, 2176, 2176, 2176, 2176, 2176, 2176, - /* 350 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 360 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2379, 2176, 2176, - /* 370 */ 2275, 2176, 2215, 2176, 2559, 2585, 2590, 2540, 2540, 2420, - /* 380 */ 2420, 2921, 2420, 2278, 2181, 2176, 2176, 2176, 2176, 2176, - /* 390 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2882, 2881, 2718, - /* 400 */ 2176, 2771, 2770, 2769, 2760, 2717, 2375, 2176, 2176, 2176, - /* 410 */ 2716, 2715, 2176, 2176, 2176, 2176, 2366, 2176, 2176, 2388, - /* 420 */ 2176, 2176, 2176, 2176, 2531, 2530, 2709, 2176, 2176, 2710, - /* 430 */ 2708, 2707, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 440 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 450 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2902, - /* 460 */ 2906, 2176, 2176, 2176, 2796, 2176, 2176, 2176, 2688, 2176, - /* 470 */ 2176, 2176, 2176, 2656, 2651, 2642, 2633, 2648, 2639, 2627, - /* 480 */ 2645, 2636, 2624, 2621, 2176, 2176, 2176, 2176, 2176, 2176, - /* 490 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 500 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 510 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 520 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 530 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2501, - /* 540 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 550 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 560 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 570 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 580 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 590 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 600 */ 2176, 2176, 2176, 2176, 2516, 2176, 2176, 2176, 2176, 2176, - /* 610 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 620 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 630 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2220, 2695, - /* 640 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 650 */ 2176, 2176, 2176, 2698, 2176, 2176, 2699, 2176, 2176, 2176, - /* 660 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 670 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 680 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 690 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2322, - /* 700 */ 2321, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 710 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 720 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2700, 2176, 2176, - /* 730 */ 2176, 2176, 2584, 2176, 2176, 2690, 2176, 2176, 2176, 2176, - /* 740 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 750 */ 2176, 2176, 2898, 2850, 2176, 2176, 2176, 2176, 2176, 2176, - /* 760 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 770 */ 2176, 2176, 2176, 2176, 2176, 2176, 2688, 2176, 2880, 2176, - /* 780 */ 2176, 2176, 2176, 2176, 2176, 2176, 2896, 2176, 2900, 2176, - /* 790 */ 2176, 2176, 2176, 2176, 2176, 2176, 2806, 2802, 2176, 2176, - /* 800 */ 2798, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 810 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 820 */ 2176, 2757, 2176, 2176, 2176, 2791, 2176, 2176, 2176, 2176, - /* 830 */ 2416, 2415, 2414, 2413, 2176, 2176, 2176, 2176, 2176, 2176, - /* 840 */ 2700, 2176, 2703, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 850 */ 2176, 2176, 2687, 2176, 2742, 2741, 2176, 2176, 2176, 2176, - /* 860 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2410, 2176, 2176, - /* 870 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 880 */ 2176, 2176, 2176, 2394, 2392, 2391, 2390, 2176, 2427, 2176, - /* 890 */ 2176, 2176, 2423, 2422, 2176, 2176, 2176, 2176, 2176, 2176, - /* 900 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 910 */ 2176, 2176, 2176, 2296, 2176, 2176, 2176, 2176, 2176, 2176, - /* 920 */ 2176, 2176, 2288, 2176, 2287, 2176, 2176, 2176, 2176, 2176, - /* 930 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 940 */ 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, 2176, - /* 950 */ 2176, 2176, 2176, 2176, 2205, 2176, 2176, 2176, 2176, 2176, - /* 960 */ 2176, + /* 0 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 10 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 20 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 30 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 40 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 50 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 60 */ 2547, 2179, 2179, 2503, 2179, 2179, 2179, 2179, 2179, 2179, + /* 70 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2510, 2179, + /* 80 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 90 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2280, + /* 100 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 110 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2278, 2799, + /* 120 */ 2179, 2925, 2588, 2179, 2179, 2828, 2179, 2179, 2179, 2179, + /* 130 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 140 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2811, 2179, 2179, + /* 150 */ 2251, 2251, 2179, 2811, 2811, 2811, 2771, 2771, 2278, 2179, + /* 160 */ 2179, 2280, 2179, 2590, 2179, 2179, 2179, 2179, 2179, 2179, + /* 170 */ 2179, 2179, 2179, 2420, 2209, 2179, 2179, 2179, 2179, 2179, + /* 180 */ 2179, 2573, 2179, 2179, 2857, 2803, 2804, 2919, 2179, 2860, + /* 190 */ 2822, 2179, 2817, 2179, 2179, 2179, 2179, 2515, 2179, 2847, + /* 200 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2616, 2179, 2179, + /* 210 */ 2365, 2567, 2179, 2179, 2179, 2179, 2179, 2903, 2801, 2841, + /* 220 */ 2179, 2851, 2179, 2179, 2179, 2604, 2280, 2179, 2280, 2560, + /* 230 */ 2498, 2179, 2508, 2179, 2508, 2505, 2179, 2179, 2179, 2508, + /* 240 */ 2505, 2505, 2505, 2354, 2350, 2179, 2179, 2348, 2179, 2179, + /* 250 */ 2179, 2179, 2234, 2179, 2234, 2179, 2280, 2280, 2179, 2280, + /* 260 */ 2179, 2179, 2280, 2179, 2280, 2179, 2280, 2179, 2280, 2280, + /* 270 */ 2179, 2280, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 280 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 290 */ 2179, 2602, 2583, 2179, 2278, 2179, 2571, 2569, 2179, 2278, + /* 300 */ 2851, 2179, 2179, 2873, 2868, 2873, 2868, 2887, 2883, 2873, + /* 310 */ 2892, 2889, 2853, 2851, 2834, 2830, 2922, 2909, 2905, 2179, + /* 320 */ 2179, 2839, 2837, 2179, 2278, 2278, 2868, 2179, 2179, 2179, + /* 330 */ 2179, 2868, 2179, 2179, 2278, 2179, 2179, 2278, 2179, 2179, + /* 340 */ 2179, 2179, 2278, 2179, 2278, 2179, 2179, 2179, 2179, 2179, + /* 350 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 360 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2382, 2179, + /* 370 */ 2179, 2278, 2179, 2218, 2179, 2562, 2588, 2593, 2543, 2543, + /* 380 */ 2423, 2423, 2925, 2423, 2281, 2184, 2179, 2179, 2179, 2179, + /* 390 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2886, 2885, + /* 400 */ 2722, 2179, 2775, 2774, 2773, 2764, 2721, 2378, 2179, 2179, + /* 410 */ 2179, 2720, 2719, 2179, 2179, 2179, 2179, 2369, 2179, 2179, + /* 420 */ 2391, 2179, 2179, 2179, 2179, 2534, 2533, 2713, 2179, 2179, + /* 430 */ 2714, 2712, 2711, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 440 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 450 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 460 */ 2906, 2910, 2179, 2179, 2179, 2800, 2179, 2179, 2179, 2692, + /* 470 */ 2179, 2179, 2179, 2179, 2660, 2655, 2646, 2637, 2652, 2643, + /* 480 */ 2631, 2649, 2640, 2628, 2625, 2179, 2179, 2179, 2179, 2179, + /* 490 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 500 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 510 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 520 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 530 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 540 */ 2179, 2504, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 550 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 560 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 570 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 580 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 590 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 600 */ 2179, 2179, 2179, 2179, 2179, 2179, 2519, 2179, 2179, 2179, + /* 610 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 620 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 630 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 640 */ 2223, 2699, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 650 */ 2179, 2179, 2179, 2179, 2179, 2702, 2179, 2179, 2703, 2179, + /* 660 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 670 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 680 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 690 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 700 */ 2179, 2325, 2324, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 710 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 720 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2704, + /* 730 */ 2179, 2179, 2179, 2179, 2587, 2179, 2179, 2694, 2179, 2179, + /* 740 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 750 */ 2179, 2179, 2179, 2179, 2902, 2854, 2179, 2179, 2179, 2179, + /* 760 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 770 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2692, 2179, + /* 780 */ 2884, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2900, 2179, + /* 790 */ 2904, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2810, 2806, + /* 800 */ 2179, 2179, 2802, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 810 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 820 */ 2179, 2179, 2179, 2761, 2179, 2179, 2179, 2795, 2179, 2179, + /* 830 */ 2179, 2179, 2419, 2418, 2417, 2416, 2179, 2179, 2179, 2179, + /* 840 */ 2179, 2179, 2704, 2179, 2707, 2179, 2179, 2179, 2179, 2179, + /* 850 */ 2179, 2179, 2179, 2179, 2691, 2179, 2746, 2745, 2179, 2179, + /* 860 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2413, + /* 870 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 880 */ 2179, 2179, 2179, 2179, 2179, 2397, 2395, 2394, 2393, 2179, + /* 890 */ 2430, 2179, 2179, 2179, 2426, 2425, 2179, 2179, 2179, 2179, + /* 900 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 910 */ 2179, 2179, 2179, 2179, 2179, 2299, 2179, 2179, 2179, 2179, + /* 920 */ 2179, 2179, 2179, 2179, 2291, 2179, 2290, 2179, 2179, 2179, + /* 930 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 940 */ 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, 2179, + /* 950 */ 2179, 2179, 2179, 2179, 2179, 2179, 2208, 2179, 2179, 2179, + /* 960 */ 2179, 2179, 2179, }; /********** End of lemon-generated parsing tables *****************************/ @@ -1600,6 +1974,7 @@ struct yyParser { }; typedef struct yyParser yyParser; +#include #ifndef NDEBUG #include static FILE *yyTraceFILE = 0; @@ -2627,323 +3002,324 @@ static const char *const yyRuleName[] = { /* 427 */ "cmd ::= KILL COMPACT NK_INTEGER", /* 428 */ "cmd ::= BALANCE VGROUP", /* 429 */ "cmd ::= BALANCE VGROUP LEADER on_vgroup_id", - /* 430 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", - /* 431 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", - /* 432 */ "cmd ::= SPLIT VGROUP NK_INTEGER", - /* 433 */ "on_vgroup_id ::=", - /* 434 */ "on_vgroup_id ::= ON NK_INTEGER", - /* 435 */ "dnode_list ::= DNODE NK_INTEGER", - /* 436 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", - /* 437 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", - /* 438 */ "cmd ::= query_or_subquery", - /* 439 */ "cmd ::= insert_query", - /* 440 */ "insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", - /* 441 */ "insert_query ::= INSERT INTO full_table_name query_or_subquery", - /* 442 */ "tags_literal ::= NK_INTEGER", - /* 443 */ "tags_literal ::= NK_INTEGER NK_PLUS duration_literal", - /* 444 */ "tags_literal ::= NK_INTEGER NK_MINUS duration_literal", - /* 445 */ "tags_literal ::= NK_PLUS NK_INTEGER", - /* 446 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal", - /* 447 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal", - /* 448 */ "tags_literal ::= NK_MINUS NK_INTEGER", - /* 449 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal", - /* 450 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal", - /* 451 */ "tags_literal ::= NK_FLOAT", - /* 452 */ "tags_literal ::= NK_PLUS NK_FLOAT", - /* 453 */ "tags_literal ::= NK_MINUS NK_FLOAT", - /* 454 */ "tags_literal ::= NK_BIN", - /* 455 */ "tags_literal ::= NK_BIN NK_PLUS duration_literal", - /* 456 */ "tags_literal ::= NK_BIN NK_MINUS duration_literal", - /* 457 */ "tags_literal ::= NK_PLUS NK_BIN", - /* 458 */ "tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal", - /* 459 */ "tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal", - /* 460 */ "tags_literal ::= NK_MINUS NK_BIN", - /* 461 */ "tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal", - /* 462 */ "tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal", - /* 463 */ "tags_literal ::= NK_HEX", - /* 464 */ "tags_literal ::= NK_HEX NK_PLUS duration_literal", - /* 465 */ "tags_literal ::= NK_HEX NK_MINUS duration_literal", - /* 466 */ "tags_literal ::= NK_PLUS NK_HEX", - /* 467 */ "tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal", - /* 468 */ "tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal", - /* 469 */ "tags_literal ::= NK_MINUS NK_HEX", - /* 470 */ "tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal", - /* 471 */ "tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal", - /* 472 */ "tags_literal ::= NK_STRING", - /* 473 */ "tags_literal ::= NK_STRING NK_PLUS duration_literal", - /* 474 */ "tags_literal ::= NK_STRING NK_MINUS duration_literal", - /* 475 */ "tags_literal ::= NK_BOOL", - /* 476 */ "tags_literal ::= NULL", - /* 477 */ "tags_literal ::= literal_func", - /* 478 */ "tags_literal ::= literal_func NK_PLUS duration_literal", - /* 479 */ "tags_literal ::= literal_func NK_MINUS duration_literal", - /* 480 */ "tags_literal_list ::= tags_literal", - /* 481 */ "tags_literal_list ::= tags_literal_list NK_COMMA tags_literal", - /* 482 */ "literal ::= NK_INTEGER", - /* 483 */ "literal ::= NK_FLOAT", - /* 484 */ "literal ::= NK_STRING", - /* 485 */ "literal ::= NK_BOOL", - /* 486 */ "literal ::= TIMESTAMP NK_STRING", - /* 487 */ "literal ::= duration_literal", - /* 488 */ "literal ::= NULL", - /* 489 */ "literal ::= NK_QUESTION", - /* 490 */ "duration_literal ::= NK_VARIABLE", - /* 491 */ "signed ::= NK_INTEGER", - /* 492 */ "signed ::= NK_PLUS NK_INTEGER", - /* 493 */ "signed ::= NK_MINUS NK_INTEGER", - /* 494 */ "signed ::= NK_FLOAT", - /* 495 */ "signed ::= NK_PLUS NK_FLOAT", - /* 496 */ "signed ::= NK_MINUS NK_FLOAT", - /* 497 */ "signed_literal ::= signed", - /* 498 */ "signed_literal ::= NK_STRING", - /* 499 */ "signed_literal ::= NK_BOOL", - /* 500 */ "signed_literal ::= TIMESTAMP NK_STRING", - /* 501 */ "signed_literal ::= duration_literal", - /* 502 */ "signed_literal ::= NULL", - /* 503 */ "signed_literal ::= literal_func", - /* 504 */ "signed_literal ::= NK_QUESTION", - /* 505 */ "literal_list ::= signed_literal", - /* 506 */ "literal_list ::= literal_list NK_COMMA signed_literal", - /* 507 */ "db_name ::= NK_ID", - /* 508 */ "table_name ::= NK_ID", - /* 509 */ "column_name ::= NK_ID", - /* 510 */ "function_name ::= NK_ID", - /* 511 */ "view_name ::= NK_ID", - /* 512 */ "table_alias ::= NK_ID", - /* 513 */ "column_alias ::= NK_ID", - /* 514 */ "column_alias ::= NK_ALIAS", - /* 515 */ "user_name ::= NK_ID", - /* 516 */ "topic_name ::= NK_ID", - /* 517 */ "stream_name ::= NK_ID", - /* 518 */ "cgroup_name ::= NK_ID", - /* 519 */ "index_name ::= NK_ID", - /* 520 */ "tsma_name ::= NK_ID", - /* 521 */ "expr_or_subquery ::= expression", - /* 522 */ "expression ::= literal", - /* 523 */ "expression ::= pseudo_column", - /* 524 */ "expression ::= column_reference", - /* 525 */ "expression ::= function_expression", - /* 526 */ "expression ::= case_when_expression", - /* 527 */ "expression ::= NK_LP expression NK_RP", - /* 528 */ "expression ::= NK_PLUS expr_or_subquery", - /* 529 */ "expression ::= NK_MINUS expr_or_subquery", - /* 530 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", - /* 531 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", - /* 532 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", - /* 533 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", - /* 534 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", - /* 535 */ "expression ::= column_reference NK_ARROW NK_STRING", - /* 536 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", - /* 537 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", - /* 538 */ "expression_list ::= expr_or_subquery", - /* 539 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", - /* 540 */ "column_reference ::= column_name", - /* 541 */ "column_reference ::= table_name NK_DOT column_name", - /* 542 */ "column_reference ::= NK_ALIAS", - /* 543 */ "column_reference ::= table_name NK_DOT NK_ALIAS", - /* 544 */ "pseudo_column ::= ROWTS", - /* 545 */ "pseudo_column ::= TBNAME", - /* 546 */ "pseudo_column ::= table_name NK_DOT TBNAME", - /* 547 */ "pseudo_column ::= QSTART", - /* 548 */ "pseudo_column ::= QEND", - /* 549 */ "pseudo_column ::= QDURATION", - /* 550 */ "pseudo_column ::= WSTART", - /* 551 */ "pseudo_column ::= WEND", - /* 552 */ "pseudo_column ::= WDURATION", - /* 553 */ "pseudo_column ::= IROWTS", - /* 554 */ "pseudo_column ::= ISFILLED", - /* 555 */ "pseudo_column ::= QTAGS", - /* 556 */ "function_expression ::= function_name NK_LP expression_list NK_RP", - /* 557 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", - /* 558 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", - /* 559 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP", - /* 560 */ "function_expression ::= literal_func", - /* 561 */ "literal_func ::= noarg_func NK_LP NK_RP", - /* 562 */ "literal_func ::= NOW", - /* 563 */ "literal_func ::= TODAY", - /* 564 */ "noarg_func ::= NOW", - /* 565 */ "noarg_func ::= TODAY", - /* 566 */ "noarg_func ::= TIMEZONE", - /* 567 */ "noarg_func ::= DATABASE", - /* 568 */ "noarg_func ::= CLIENT_VERSION", - /* 569 */ "noarg_func ::= SERVER_VERSION", - /* 570 */ "noarg_func ::= SERVER_STATUS", - /* 571 */ "noarg_func ::= CURRENT_USER", - /* 572 */ "noarg_func ::= USER", - /* 573 */ "star_func ::= COUNT", - /* 574 */ "star_func ::= FIRST", - /* 575 */ "star_func ::= LAST", - /* 576 */ "star_func ::= LAST_ROW", - /* 577 */ "star_func_para_list ::= NK_STAR", - /* 578 */ "star_func_para_list ::= other_para_list", - /* 579 */ "other_para_list ::= star_func_para", - /* 580 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", - /* 581 */ "star_func_para ::= expr_or_subquery", - /* 582 */ "star_func_para ::= table_name NK_DOT NK_STAR", - /* 583 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", - /* 584 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", - /* 585 */ "when_then_list ::= when_then_expr", - /* 586 */ "when_then_list ::= when_then_list when_then_expr", - /* 587 */ "when_then_expr ::= WHEN common_expression THEN common_expression", - /* 588 */ "case_when_else_opt ::=", - /* 589 */ "case_when_else_opt ::= ELSE common_expression", - /* 590 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", - /* 591 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", - /* 592 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", - /* 593 */ "predicate ::= expr_or_subquery IS NULL", - /* 594 */ "predicate ::= expr_or_subquery IS NOT NULL", - /* 595 */ "predicate ::= expr_or_subquery in_op in_predicate_value", - /* 596 */ "compare_op ::= NK_LT", - /* 597 */ "compare_op ::= NK_GT", - /* 598 */ "compare_op ::= NK_LE", - /* 599 */ "compare_op ::= NK_GE", - /* 600 */ "compare_op ::= NK_NE", - /* 601 */ "compare_op ::= NK_EQ", - /* 602 */ "compare_op ::= LIKE", - /* 603 */ "compare_op ::= NOT LIKE", - /* 604 */ "compare_op ::= MATCH", - /* 605 */ "compare_op ::= NMATCH", - /* 606 */ "compare_op ::= CONTAINS", - /* 607 */ "in_op ::= IN", - /* 608 */ "in_op ::= NOT IN", - /* 609 */ "in_predicate_value ::= NK_LP literal_list NK_RP", - /* 610 */ "boolean_value_expression ::= boolean_primary", - /* 611 */ "boolean_value_expression ::= NOT boolean_primary", - /* 612 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", - /* 613 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", - /* 614 */ "boolean_primary ::= predicate", - /* 615 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", - /* 616 */ "common_expression ::= expr_or_subquery", - /* 617 */ "common_expression ::= boolean_value_expression", - /* 618 */ "from_clause_opt ::=", - /* 619 */ "from_clause_opt ::= FROM table_reference_list", - /* 620 */ "table_reference_list ::= table_reference", - /* 621 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", - /* 622 */ "table_reference ::= table_primary", - /* 623 */ "table_reference ::= joined_table", - /* 624 */ "table_primary ::= table_name alias_opt", - /* 625 */ "table_primary ::= db_name NK_DOT table_name alias_opt", - /* 626 */ "table_primary ::= subquery alias_opt", - /* 627 */ "table_primary ::= parenthesized_joined_table", - /* 628 */ "alias_opt ::=", - /* 629 */ "alias_opt ::= table_alias", - /* 630 */ "alias_opt ::= AS table_alias", - /* 631 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", - /* 632 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", - /* 633 */ "joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt", - /* 634 */ "join_type ::=", - /* 635 */ "join_type ::= INNER", - /* 636 */ "join_type ::= LEFT", - /* 637 */ "join_type ::= RIGHT", - /* 638 */ "join_type ::= FULL", - /* 639 */ "join_subtype ::=", - /* 640 */ "join_subtype ::= OUTER", - /* 641 */ "join_subtype ::= SEMI", - /* 642 */ "join_subtype ::= ANTI", - /* 643 */ "join_subtype ::= ASOF", - /* 644 */ "join_subtype ::= WINDOW", - /* 645 */ "join_on_clause_opt ::=", - /* 646 */ "join_on_clause_opt ::= ON search_condition", - /* 647 */ "window_offset_clause_opt ::=", - /* 648 */ "window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP", - /* 649 */ "window_offset_literal ::= NK_VARIABLE", - /* 650 */ "window_offset_literal ::= NK_MINUS NK_VARIABLE", - /* 651 */ "jlimit_clause_opt ::=", - /* 652 */ "jlimit_clause_opt ::= JLIMIT NK_INTEGER", - /* 653 */ "query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", - /* 654 */ "hint_list ::=", - /* 655 */ "hint_list ::= NK_HINT", - /* 656 */ "tag_mode_opt ::=", - /* 657 */ "tag_mode_opt ::= TAGS", - /* 658 */ "set_quantifier_opt ::=", - /* 659 */ "set_quantifier_opt ::= DISTINCT", - /* 660 */ "set_quantifier_opt ::= ALL", - /* 661 */ "select_list ::= select_item", - /* 662 */ "select_list ::= select_list NK_COMMA select_item", - /* 663 */ "select_item ::= NK_STAR", - /* 664 */ "select_item ::= common_expression", - /* 665 */ "select_item ::= common_expression column_alias", - /* 666 */ "select_item ::= common_expression AS column_alias", - /* 667 */ "select_item ::= table_name NK_DOT NK_STAR", - /* 668 */ "where_clause_opt ::=", - /* 669 */ "where_clause_opt ::= WHERE search_condition", - /* 670 */ "partition_by_clause_opt ::=", - /* 671 */ "partition_by_clause_opt ::= PARTITION BY partition_list", - /* 672 */ "partition_list ::= partition_item", - /* 673 */ "partition_list ::= partition_list NK_COMMA partition_item", - /* 674 */ "partition_item ::= expr_or_subquery", - /* 675 */ "partition_item ::= expr_or_subquery column_alias", - /* 676 */ "partition_item ::= expr_or_subquery AS column_alias", - /* 677 */ "twindow_clause_opt ::=", - /* 678 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP", - /* 679 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", - /* 680 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt", - /* 681 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt", - /* 682 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", - /* 683 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP", - /* 684 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP", - /* 685 */ "sliding_opt ::=", - /* 686 */ "sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP", - /* 687 */ "interval_sliding_duration_literal ::= NK_VARIABLE", - /* 688 */ "interval_sliding_duration_literal ::= NK_STRING", - /* 689 */ "interval_sliding_duration_literal ::= NK_INTEGER", - /* 690 */ "fill_opt ::=", - /* 691 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", - /* 692 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP", - /* 693 */ "fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP", - /* 694 */ "fill_mode ::= NONE", - /* 695 */ "fill_mode ::= PREV", - /* 696 */ "fill_mode ::= NULL", - /* 697 */ "fill_mode ::= NULL_F", - /* 698 */ "fill_mode ::= LINEAR", - /* 699 */ "fill_mode ::= NEXT", - /* 700 */ "group_by_clause_opt ::=", - /* 701 */ "group_by_clause_opt ::= GROUP BY group_by_list", - /* 702 */ "group_by_list ::= expr_or_subquery", - /* 703 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", - /* 704 */ "having_clause_opt ::=", - /* 705 */ "having_clause_opt ::= HAVING search_condition", - /* 706 */ "range_opt ::=", - /* 707 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", - /* 708 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_RP", - /* 709 */ "every_opt ::=", - /* 710 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", - /* 711 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", - /* 712 */ "query_simple ::= query_specification", - /* 713 */ "query_simple ::= union_query_expression", - /* 714 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", - /* 715 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", - /* 716 */ "query_simple_or_subquery ::= query_simple", - /* 717 */ "query_simple_or_subquery ::= subquery", - /* 718 */ "query_or_subquery ::= query_expression", - /* 719 */ "query_or_subquery ::= subquery", - /* 720 */ "order_by_clause_opt ::=", - /* 721 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", - /* 722 */ "slimit_clause_opt ::=", - /* 723 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", - /* 724 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", - /* 725 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 726 */ "limit_clause_opt ::=", - /* 727 */ "limit_clause_opt ::= LIMIT NK_INTEGER", - /* 728 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", - /* 729 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", - /* 730 */ "subquery ::= NK_LP query_expression NK_RP", - /* 731 */ "subquery ::= NK_LP subquery NK_RP", - /* 732 */ "search_condition ::= common_expression", - /* 733 */ "sort_specification_list ::= sort_specification", - /* 734 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", - /* 735 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", - /* 736 */ "ordering_specification_opt ::=", - /* 737 */ "ordering_specification_opt ::= ASC", - /* 738 */ "ordering_specification_opt ::= DESC", - /* 739 */ "null_ordering_opt ::=", - /* 740 */ "null_ordering_opt ::= NULLS FIRST", - /* 741 */ "null_ordering_opt ::= NULLS LAST", - /* 742 */ "column_options ::=", - /* 743 */ "column_options ::= column_options PRIMARY KEY", - /* 744 */ "column_options ::= column_options ENCODE NK_STRING", - /* 745 */ "column_options ::= column_options COMPRESS NK_STRING", - /* 746 */ "column_options ::= column_options LEVEL NK_STRING", + /* 430 */ "cmd ::= BALANCE VGROUP LEADER DATABASE db_name", + /* 431 */ "cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER", + /* 432 */ "cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list", + /* 433 */ "cmd ::= SPLIT VGROUP NK_INTEGER", + /* 434 */ "on_vgroup_id ::=", + /* 435 */ "on_vgroup_id ::= ON NK_INTEGER", + /* 436 */ "dnode_list ::= DNODE NK_INTEGER", + /* 437 */ "dnode_list ::= dnode_list DNODE NK_INTEGER", + /* 438 */ "cmd ::= DELETE FROM full_table_name where_clause_opt", + /* 439 */ "cmd ::= query_or_subquery", + /* 440 */ "cmd ::= insert_query", + /* 441 */ "insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery", + /* 442 */ "insert_query ::= INSERT INTO full_table_name query_or_subquery", + /* 443 */ "tags_literal ::= NK_INTEGER", + /* 444 */ "tags_literal ::= NK_INTEGER NK_PLUS duration_literal", + /* 445 */ "tags_literal ::= NK_INTEGER NK_MINUS duration_literal", + /* 446 */ "tags_literal ::= NK_PLUS NK_INTEGER", + /* 447 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal", + /* 448 */ "tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal", + /* 449 */ "tags_literal ::= NK_MINUS NK_INTEGER", + /* 450 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal", + /* 451 */ "tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal", + /* 452 */ "tags_literal ::= NK_FLOAT", + /* 453 */ "tags_literal ::= NK_PLUS NK_FLOAT", + /* 454 */ "tags_literal ::= NK_MINUS NK_FLOAT", + /* 455 */ "tags_literal ::= NK_BIN", + /* 456 */ "tags_literal ::= NK_BIN NK_PLUS duration_literal", + /* 457 */ "tags_literal ::= NK_BIN NK_MINUS duration_literal", + /* 458 */ "tags_literal ::= NK_PLUS NK_BIN", + /* 459 */ "tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal", + /* 460 */ "tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal", + /* 461 */ "tags_literal ::= NK_MINUS NK_BIN", + /* 462 */ "tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal", + /* 463 */ "tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal", + /* 464 */ "tags_literal ::= NK_HEX", + /* 465 */ "tags_literal ::= NK_HEX NK_PLUS duration_literal", + /* 466 */ "tags_literal ::= NK_HEX NK_MINUS duration_literal", + /* 467 */ "tags_literal ::= NK_PLUS NK_HEX", + /* 468 */ "tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal", + /* 469 */ "tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal", + /* 470 */ "tags_literal ::= NK_MINUS NK_HEX", + /* 471 */ "tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal", + /* 472 */ "tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal", + /* 473 */ "tags_literal ::= NK_STRING", + /* 474 */ "tags_literal ::= NK_STRING NK_PLUS duration_literal", + /* 475 */ "tags_literal ::= NK_STRING NK_MINUS duration_literal", + /* 476 */ "tags_literal ::= NK_BOOL", + /* 477 */ "tags_literal ::= NULL", + /* 478 */ "tags_literal ::= literal_func", + /* 479 */ "tags_literal ::= literal_func NK_PLUS duration_literal", + /* 480 */ "tags_literal ::= literal_func NK_MINUS duration_literal", + /* 481 */ "tags_literal_list ::= tags_literal", + /* 482 */ "tags_literal_list ::= tags_literal_list NK_COMMA tags_literal", + /* 483 */ "literal ::= NK_INTEGER", + /* 484 */ "literal ::= NK_FLOAT", + /* 485 */ "literal ::= NK_STRING", + /* 486 */ "literal ::= NK_BOOL", + /* 487 */ "literal ::= TIMESTAMP NK_STRING", + /* 488 */ "literal ::= duration_literal", + /* 489 */ "literal ::= NULL", + /* 490 */ "literal ::= NK_QUESTION", + /* 491 */ "duration_literal ::= NK_VARIABLE", + /* 492 */ "signed ::= NK_INTEGER", + /* 493 */ "signed ::= NK_PLUS NK_INTEGER", + /* 494 */ "signed ::= NK_MINUS NK_INTEGER", + /* 495 */ "signed ::= NK_FLOAT", + /* 496 */ "signed ::= NK_PLUS NK_FLOAT", + /* 497 */ "signed ::= NK_MINUS NK_FLOAT", + /* 498 */ "signed_literal ::= signed", + /* 499 */ "signed_literal ::= NK_STRING", + /* 500 */ "signed_literal ::= NK_BOOL", + /* 501 */ "signed_literal ::= TIMESTAMP NK_STRING", + /* 502 */ "signed_literal ::= duration_literal", + /* 503 */ "signed_literal ::= NULL", + /* 504 */ "signed_literal ::= literal_func", + /* 505 */ "signed_literal ::= NK_QUESTION", + /* 506 */ "literal_list ::= signed_literal", + /* 507 */ "literal_list ::= literal_list NK_COMMA signed_literal", + /* 508 */ "db_name ::= NK_ID", + /* 509 */ "table_name ::= NK_ID", + /* 510 */ "column_name ::= NK_ID", + /* 511 */ "function_name ::= NK_ID", + /* 512 */ "view_name ::= NK_ID", + /* 513 */ "table_alias ::= NK_ID", + /* 514 */ "column_alias ::= NK_ID", + /* 515 */ "column_alias ::= NK_ALIAS", + /* 516 */ "user_name ::= NK_ID", + /* 517 */ "topic_name ::= NK_ID", + /* 518 */ "stream_name ::= NK_ID", + /* 519 */ "cgroup_name ::= NK_ID", + /* 520 */ "index_name ::= NK_ID", + /* 521 */ "tsma_name ::= NK_ID", + /* 522 */ "expr_or_subquery ::= expression", + /* 523 */ "expression ::= literal", + /* 524 */ "expression ::= pseudo_column", + /* 525 */ "expression ::= column_reference", + /* 526 */ "expression ::= function_expression", + /* 527 */ "expression ::= case_when_expression", + /* 528 */ "expression ::= NK_LP expression NK_RP", + /* 529 */ "expression ::= NK_PLUS expr_or_subquery", + /* 530 */ "expression ::= NK_MINUS expr_or_subquery", + /* 531 */ "expression ::= expr_or_subquery NK_PLUS expr_or_subquery", + /* 532 */ "expression ::= expr_or_subquery NK_MINUS expr_or_subquery", + /* 533 */ "expression ::= expr_or_subquery NK_STAR expr_or_subquery", + /* 534 */ "expression ::= expr_or_subquery NK_SLASH expr_or_subquery", + /* 535 */ "expression ::= expr_or_subquery NK_REM expr_or_subquery", + /* 536 */ "expression ::= column_reference NK_ARROW NK_STRING", + /* 537 */ "expression ::= expr_or_subquery NK_BITAND expr_or_subquery", + /* 538 */ "expression ::= expr_or_subquery NK_BITOR expr_or_subquery", + /* 539 */ "expression_list ::= expr_or_subquery", + /* 540 */ "expression_list ::= expression_list NK_COMMA expr_or_subquery", + /* 541 */ "column_reference ::= column_name", + /* 542 */ "column_reference ::= table_name NK_DOT column_name", + /* 543 */ "column_reference ::= NK_ALIAS", + /* 544 */ "column_reference ::= table_name NK_DOT NK_ALIAS", + /* 545 */ "pseudo_column ::= ROWTS", + /* 546 */ "pseudo_column ::= TBNAME", + /* 547 */ "pseudo_column ::= table_name NK_DOT TBNAME", + /* 548 */ "pseudo_column ::= QSTART", + /* 549 */ "pseudo_column ::= QEND", + /* 550 */ "pseudo_column ::= QDURATION", + /* 551 */ "pseudo_column ::= WSTART", + /* 552 */ "pseudo_column ::= WEND", + /* 553 */ "pseudo_column ::= WDURATION", + /* 554 */ "pseudo_column ::= IROWTS", + /* 555 */ "pseudo_column ::= ISFILLED", + /* 556 */ "pseudo_column ::= QTAGS", + /* 557 */ "function_expression ::= function_name NK_LP expression_list NK_RP", + /* 558 */ "function_expression ::= star_func NK_LP star_func_para_list NK_RP", + /* 559 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP", + /* 560 */ "function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP", + /* 561 */ "function_expression ::= literal_func", + /* 562 */ "literal_func ::= noarg_func NK_LP NK_RP", + /* 563 */ "literal_func ::= NOW", + /* 564 */ "literal_func ::= TODAY", + /* 565 */ "noarg_func ::= NOW", + /* 566 */ "noarg_func ::= TODAY", + /* 567 */ "noarg_func ::= TIMEZONE", + /* 568 */ "noarg_func ::= DATABASE", + /* 569 */ "noarg_func ::= CLIENT_VERSION", + /* 570 */ "noarg_func ::= SERVER_VERSION", + /* 571 */ "noarg_func ::= SERVER_STATUS", + /* 572 */ "noarg_func ::= CURRENT_USER", + /* 573 */ "noarg_func ::= USER", + /* 574 */ "star_func ::= COUNT", + /* 575 */ "star_func ::= FIRST", + /* 576 */ "star_func ::= LAST", + /* 577 */ "star_func ::= LAST_ROW", + /* 578 */ "star_func_para_list ::= NK_STAR", + /* 579 */ "star_func_para_list ::= other_para_list", + /* 580 */ "other_para_list ::= star_func_para", + /* 581 */ "other_para_list ::= other_para_list NK_COMMA star_func_para", + /* 582 */ "star_func_para ::= expr_or_subquery", + /* 583 */ "star_func_para ::= table_name NK_DOT NK_STAR", + /* 584 */ "case_when_expression ::= CASE when_then_list case_when_else_opt END", + /* 585 */ "case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END", + /* 586 */ "when_then_list ::= when_then_expr", + /* 587 */ "when_then_list ::= when_then_list when_then_expr", + /* 588 */ "when_then_expr ::= WHEN common_expression THEN common_expression", + /* 589 */ "case_when_else_opt ::=", + /* 590 */ "case_when_else_opt ::= ELSE common_expression", + /* 591 */ "predicate ::= expr_or_subquery compare_op expr_or_subquery", + /* 592 */ "predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery", + /* 593 */ "predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery", + /* 594 */ "predicate ::= expr_or_subquery IS NULL", + /* 595 */ "predicate ::= expr_or_subquery IS NOT NULL", + /* 596 */ "predicate ::= expr_or_subquery in_op in_predicate_value", + /* 597 */ "compare_op ::= NK_LT", + /* 598 */ "compare_op ::= NK_GT", + /* 599 */ "compare_op ::= NK_LE", + /* 600 */ "compare_op ::= NK_GE", + /* 601 */ "compare_op ::= NK_NE", + /* 602 */ "compare_op ::= NK_EQ", + /* 603 */ "compare_op ::= LIKE", + /* 604 */ "compare_op ::= NOT LIKE", + /* 605 */ "compare_op ::= MATCH", + /* 606 */ "compare_op ::= NMATCH", + /* 607 */ "compare_op ::= CONTAINS", + /* 608 */ "in_op ::= IN", + /* 609 */ "in_op ::= NOT IN", + /* 610 */ "in_predicate_value ::= NK_LP literal_list NK_RP", + /* 611 */ "boolean_value_expression ::= boolean_primary", + /* 612 */ "boolean_value_expression ::= NOT boolean_primary", + /* 613 */ "boolean_value_expression ::= boolean_value_expression OR boolean_value_expression", + /* 614 */ "boolean_value_expression ::= boolean_value_expression AND boolean_value_expression", + /* 615 */ "boolean_primary ::= predicate", + /* 616 */ "boolean_primary ::= NK_LP boolean_value_expression NK_RP", + /* 617 */ "common_expression ::= expr_or_subquery", + /* 618 */ "common_expression ::= boolean_value_expression", + /* 619 */ "from_clause_opt ::=", + /* 620 */ "from_clause_opt ::= FROM table_reference_list", + /* 621 */ "table_reference_list ::= table_reference", + /* 622 */ "table_reference_list ::= table_reference_list NK_COMMA table_reference", + /* 623 */ "table_reference ::= table_primary", + /* 624 */ "table_reference ::= joined_table", + /* 625 */ "table_primary ::= table_name alias_opt", + /* 626 */ "table_primary ::= db_name NK_DOT table_name alias_opt", + /* 627 */ "table_primary ::= subquery alias_opt", + /* 628 */ "table_primary ::= parenthesized_joined_table", + /* 629 */ "alias_opt ::=", + /* 630 */ "alias_opt ::= table_alias", + /* 631 */ "alias_opt ::= AS table_alias", + /* 632 */ "parenthesized_joined_table ::= NK_LP joined_table NK_RP", + /* 633 */ "parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP", + /* 634 */ "joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt", + /* 635 */ "join_type ::=", + /* 636 */ "join_type ::= INNER", + /* 637 */ "join_type ::= LEFT", + /* 638 */ "join_type ::= RIGHT", + /* 639 */ "join_type ::= FULL", + /* 640 */ "join_subtype ::=", + /* 641 */ "join_subtype ::= OUTER", + /* 642 */ "join_subtype ::= SEMI", + /* 643 */ "join_subtype ::= ANTI", + /* 644 */ "join_subtype ::= ASOF", + /* 645 */ "join_subtype ::= WINDOW", + /* 646 */ "join_on_clause_opt ::=", + /* 647 */ "join_on_clause_opt ::= ON search_condition", + /* 648 */ "window_offset_clause_opt ::=", + /* 649 */ "window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP", + /* 650 */ "window_offset_literal ::= NK_VARIABLE", + /* 651 */ "window_offset_literal ::= NK_MINUS NK_VARIABLE", + /* 652 */ "jlimit_clause_opt ::=", + /* 653 */ "jlimit_clause_opt ::= JLIMIT NK_INTEGER", + /* 654 */ "query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt", + /* 655 */ "hint_list ::=", + /* 656 */ "hint_list ::= NK_HINT", + /* 657 */ "tag_mode_opt ::=", + /* 658 */ "tag_mode_opt ::= TAGS", + /* 659 */ "set_quantifier_opt ::=", + /* 660 */ "set_quantifier_opt ::= DISTINCT", + /* 661 */ "set_quantifier_opt ::= ALL", + /* 662 */ "select_list ::= select_item", + /* 663 */ "select_list ::= select_list NK_COMMA select_item", + /* 664 */ "select_item ::= NK_STAR", + /* 665 */ "select_item ::= common_expression", + /* 666 */ "select_item ::= common_expression column_alias", + /* 667 */ "select_item ::= common_expression AS column_alias", + /* 668 */ "select_item ::= table_name NK_DOT NK_STAR", + /* 669 */ "where_clause_opt ::=", + /* 670 */ "where_clause_opt ::= WHERE search_condition", + /* 671 */ "partition_by_clause_opt ::=", + /* 672 */ "partition_by_clause_opt ::= PARTITION BY partition_list", + /* 673 */ "partition_list ::= partition_item", + /* 674 */ "partition_list ::= partition_list NK_COMMA partition_item", + /* 675 */ "partition_item ::= expr_or_subquery", + /* 676 */ "partition_item ::= expr_or_subquery column_alias", + /* 677 */ "partition_item ::= expr_or_subquery AS column_alias", + /* 678 */ "twindow_clause_opt ::=", + /* 679 */ "twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP", + /* 680 */ "twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP", + /* 681 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt", + /* 682 */ "twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt", + /* 683 */ "twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition", + /* 684 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP", + /* 685 */ "twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP", + /* 686 */ "sliding_opt ::=", + /* 687 */ "sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP", + /* 688 */ "interval_sliding_duration_literal ::= NK_VARIABLE", + /* 689 */ "interval_sliding_duration_literal ::= NK_STRING", + /* 690 */ "interval_sliding_duration_literal ::= NK_INTEGER", + /* 691 */ "fill_opt ::=", + /* 692 */ "fill_opt ::= FILL NK_LP fill_mode NK_RP", + /* 693 */ "fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP", + /* 694 */ "fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP", + /* 695 */ "fill_mode ::= NONE", + /* 696 */ "fill_mode ::= PREV", + /* 697 */ "fill_mode ::= NULL", + /* 698 */ "fill_mode ::= NULL_F", + /* 699 */ "fill_mode ::= LINEAR", + /* 700 */ "fill_mode ::= NEXT", + /* 701 */ "group_by_clause_opt ::=", + /* 702 */ "group_by_clause_opt ::= GROUP BY group_by_list", + /* 703 */ "group_by_list ::= expr_or_subquery", + /* 704 */ "group_by_list ::= group_by_list NK_COMMA expr_or_subquery", + /* 705 */ "having_clause_opt ::=", + /* 706 */ "having_clause_opt ::= HAVING search_condition", + /* 707 */ "range_opt ::=", + /* 708 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP", + /* 709 */ "range_opt ::= RANGE NK_LP expr_or_subquery NK_RP", + /* 710 */ "every_opt ::=", + /* 711 */ "every_opt ::= EVERY NK_LP duration_literal NK_RP", + /* 712 */ "query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt", + /* 713 */ "query_simple ::= query_specification", + /* 714 */ "query_simple ::= union_query_expression", + /* 715 */ "union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery", + /* 716 */ "union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery", + /* 717 */ "query_simple_or_subquery ::= query_simple", + /* 718 */ "query_simple_or_subquery ::= subquery", + /* 719 */ "query_or_subquery ::= query_expression", + /* 720 */ "query_or_subquery ::= subquery", + /* 721 */ "order_by_clause_opt ::=", + /* 722 */ "order_by_clause_opt ::= ORDER BY sort_specification_list", + /* 723 */ "slimit_clause_opt ::=", + /* 724 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER", + /* 725 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER", + /* 726 */ "slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 727 */ "limit_clause_opt ::=", + /* 728 */ "limit_clause_opt ::= LIMIT NK_INTEGER", + /* 729 */ "limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER", + /* 730 */ "limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER", + /* 731 */ "subquery ::= NK_LP query_expression NK_RP", + /* 732 */ "subquery ::= NK_LP subquery NK_RP", + /* 733 */ "search_condition ::= common_expression", + /* 734 */ "sort_specification_list ::= sort_specification", + /* 735 */ "sort_specification_list ::= sort_specification_list NK_COMMA sort_specification", + /* 736 */ "sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt", + /* 737 */ "ordering_specification_opt ::=", + /* 738 */ "ordering_specification_opt ::= ASC", + /* 739 */ "ordering_specification_opt ::= DESC", + /* 740 */ "null_ordering_opt ::=", + /* 741 */ "null_ordering_opt ::= NULLS FIRST", + /* 742 */ "null_ordering_opt ::= NULLS LAST", + /* 743 */ "column_options ::=", + /* 744 */ "column_options ::= column_options PRIMARY KEY", + /* 745 */ "column_options ::= column_options ENCODE NK_STRING", + /* 746 */ "column_options ::= column_options COMPRESS NK_STRING", + /* 747 */ "column_options ::= column_options LEVEL NK_STRING", }; #endif /* NDEBUG */ @@ -3488,7 +3864,7 @@ static YYACTIONTYPE yy_find_shift_action( #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ - assert( i>=0 && i=0 && i<(int)(sizeof(yy_action)/sizeof(yy_action[0])) ); return yy_action[i]; } }while(1); @@ -4040,323 +4416,324 @@ static const YYCODETYPE yyRuleInfoLhs[] = { 376, /* (427) cmd ::= KILL COMPACT NK_INTEGER */ 376, /* (428) cmd ::= BALANCE VGROUP */ 376, /* (429) cmd ::= BALANCE VGROUP LEADER on_vgroup_id */ - 376, /* (430) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ - 376, /* (431) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ - 376, /* (432) cmd ::= SPLIT VGROUP NK_INTEGER */ - 485, /* (433) on_vgroup_id ::= */ - 485, /* (434) on_vgroup_id ::= ON NK_INTEGER */ - 486, /* (435) dnode_list ::= DNODE NK_INTEGER */ - 486, /* (436) dnode_list ::= dnode_list DNODE NK_INTEGER */ - 376, /* (437) cmd ::= DELETE FROM full_table_name where_clause_opt */ - 376, /* (438) cmd ::= query_or_subquery */ - 376, /* (439) cmd ::= insert_query */ - 468, /* (440) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ - 468, /* (441) insert_query ::= INSERT INTO full_table_name query_or_subquery */ - 423, /* (442) tags_literal ::= NK_INTEGER */ - 423, /* (443) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ - 423, /* (444) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ - 423, /* (445) tags_literal ::= NK_PLUS NK_INTEGER */ - 423, /* (446) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ - 423, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ - 423, /* (448) tags_literal ::= NK_MINUS NK_INTEGER */ - 423, /* (449) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ - 423, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ - 423, /* (451) tags_literal ::= NK_FLOAT */ - 423, /* (452) tags_literal ::= NK_PLUS NK_FLOAT */ - 423, /* (453) tags_literal ::= NK_MINUS NK_FLOAT */ - 423, /* (454) tags_literal ::= NK_BIN */ - 423, /* (455) tags_literal ::= NK_BIN NK_PLUS duration_literal */ - 423, /* (456) tags_literal ::= NK_BIN NK_MINUS duration_literal */ - 423, /* (457) tags_literal ::= NK_PLUS NK_BIN */ - 423, /* (458) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ - 423, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ - 423, /* (460) tags_literal ::= NK_MINUS NK_BIN */ - 423, /* (461) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ - 423, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ - 423, /* (463) tags_literal ::= NK_HEX */ - 423, /* (464) tags_literal ::= NK_HEX NK_PLUS duration_literal */ - 423, /* (465) tags_literal ::= NK_HEX NK_MINUS duration_literal */ - 423, /* (466) tags_literal ::= NK_PLUS NK_HEX */ - 423, /* (467) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ - 423, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ - 423, /* (469) tags_literal ::= NK_MINUS NK_HEX */ - 423, /* (470) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ - 423, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ - 423, /* (472) tags_literal ::= NK_STRING */ - 423, /* (473) tags_literal ::= NK_STRING NK_PLUS duration_literal */ - 423, /* (474) tags_literal ::= NK_STRING NK_MINUS duration_literal */ - 423, /* (475) tags_literal ::= NK_BOOL */ - 423, /* (476) tags_literal ::= NULL */ - 423, /* (477) tags_literal ::= literal_func */ - 423, /* (478) tags_literal ::= literal_func NK_PLUS duration_literal */ - 423, /* (479) tags_literal ::= literal_func NK_MINUS duration_literal */ - 426, /* (480) tags_literal_list ::= tags_literal */ - 426, /* (481) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ - 379, /* (482) literal ::= NK_INTEGER */ - 379, /* (483) literal ::= NK_FLOAT */ - 379, /* (484) literal ::= NK_STRING */ - 379, /* (485) literal ::= NK_BOOL */ - 379, /* (486) literal ::= TIMESTAMP NK_STRING */ - 379, /* (487) literal ::= duration_literal */ - 379, /* (488) literal ::= NULL */ - 379, /* (489) literal ::= NK_QUESTION */ - 436, /* (490) duration_literal ::= NK_VARIABLE */ - 408, /* (491) signed ::= NK_INTEGER */ - 408, /* (492) signed ::= NK_PLUS NK_INTEGER */ - 408, /* (493) signed ::= NK_MINUS NK_INTEGER */ - 408, /* (494) signed ::= NK_FLOAT */ - 408, /* (495) signed ::= NK_PLUS NK_FLOAT */ - 408, /* (496) signed ::= NK_MINUS NK_FLOAT */ - 488, /* (497) signed_literal ::= signed */ - 488, /* (498) signed_literal ::= NK_STRING */ - 488, /* (499) signed_literal ::= NK_BOOL */ - 488, /* (500) signed_literal ::= TIMESTAMP NK_STRING */ - 488, /* (501) signed_literal ::= duration_literal */ - 488, /* (502) signed_literal ::= NULL */ - 488, /* (503) signed_literal ::= literal_func */ - 488, /* (504) signed_literal ::= NK_QUESTION */ - 489, /* (505) literal_list ::= signed_literal */ - 489, /* (506) literal_list ::= literal_list NK_COMMA signed_literal */ - 391, /* (507) db_name ::= NK_ID */ - 392, /* (508) table_name ::= NK_ID */ - 420, /* (509) column_name ::= NK_ID */ - 438, /* (510) function_name ::= NK_ID */ - 474, /* (511) view_name ::= NK_ID */ - 490, /* (512) table_alias ::= NK_ID */ - 449, /* (513) column_alias ::= NK_ID */ - 449, /* (514) column_alias ::= NK_ALIAS */ - 384, /* (515) user_name ::= NK_ID */ - 393, /* (516) topic_name ::= NK_ID */ - 475, /* (517) stream_name ::= NK_ID */ - 465, /* (518) cgroup_name ::= NK_ID */ - 456, /* (519) index_name ::= NK_ID */ - 450, /* (520) tsma_name ::= NK_ID */ - 491, /* (521) expr_or_subquery ::= expression */ - 484, /* (522) expression ::= literal */ - 484, /* (523) expression ::= pseudo_column */ - 484, /* (524) expression ::= column_reference */ - 484, /* (525) expression ::= function_expression */ - 484, /* (526) expression ::= case_when_expression */ - 484, /* (527) expression ::= NK_LP expression NK_RP */ - 484, /* (528) expression ::= NK_PLUS expr_or_subquery */ - 484, /* (529) expression ::= NK_MINUS expr_or_subquery */ - 484, /* (530) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ - 484, /* (531) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ - 484, /* (532) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ - 484, /* (533) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ - 484, /* (534) expression ::= expr_or_subquery NK_REM expr_or_subquery */ - 484, /* (535) expression ::= column_reference NK_ARROW NK_STRING */ - 484, /* (536) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ - 484, /* (537) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ - 461, /* (538) expression_list ::= expr_or_subquery */ - 461, /* (539) expression_list ::= expression_list NK_COMMA expr_or_subquery */ - 493, /* (540) column_reference ::= column_name */ - 493, /* (541) column_reference ::= table_name NK_DOT column_name */ - 493, /* (542) column_reference ::= NK_ALIAS */ - 493, /* (543) column_reference ::= table_name NK_DOT NK_ALIAS */ - 492, /* (544) pseudo_column ::= ROWTS */ - 492, /* (545) pseudo_column ::= TBNAME */ - 492, /* (546) pseudo_column ::= table_name NK_DOT TBNAME */ - 492, /* (547) pseudo_column ::= QSTART */ - 492, /* (548) pseudo_column ::= QEND */ - 492, /* (549) pseudo_column ::= QDURATION */ - 492, /* (550) pseudo_column ::= WSTART */ - 492, /* (551) pseudo_column ::= WEND */ - 492, /* (552) pseudo_column ::= WDURATION */ - 492, /* (553) pseudo_column ::= IROWTS */ - 492, /* (554) pseudo_column ::= ISFILLED */ - 492, /* (555) pseudo_column ::= QTAGS */ - 494, /* (556) function_expression ::= function_name NK_LP expression_list NK_RP */ - 494, /* (557) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ - 494, /* (558) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - 494, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ - 494, /* (560) function_expression ::= literal_func */ - 487, /* (561) literal_func ::= noarg_func NK_LP NK_RP */ - 487, /* (562) literal_func ::= NOW */ - 487, /* (563) literal_func ::= TODAY */ - 498, /* (564) noarg_func ::= NOW */ - 498, /* (565) noarg_func ::= TODAY */ - 498, /* (566) noarg_func ::= TIMEZONE */ - 498, /* (567) noarg_func ::= DATABASE */ - 498, /* (568) noarg_func ::= CLIENT_VERSION */ - 498, /* (569) noarg_func ::= SERVER_VERSION */ - 498, /* (570) noarg_func ::= SERVER_STATUS */ - 498, /* (571) noarg_func ::= CURRENT_USER */ - 498, /* (572) noarg_func ::= USER */ - 496, /* (573) star_func ::= COUNT */ - 496, /* (574) star_func ::= FIRST */ - 496, /* (575) star_func ::= LAST */ - 496, /* (576) star_func ::= LAST_ROW */ - 497, /* (577) star_func_para_list ::= NK_STAR */ - 497, /* (578) star_func_para_list ::= other_para_list */ - 499, /* (579) other_para_list ::= star_func_para */ - 499, /* (580) other_para_list ::= other_para_list NK_COMMA star_func_para */ - 500, /* (581) star_func_para ::= expr_or_subquery */ - 500, /* (582) star_func_para ::= table_name NK_DOT NK_STAR */ - 495, /* (583) case_when_expression ::= CASE when_then_list case_when_else_opt END */ - 495, /* (584) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ - 501, /* (585) when_then_list ::= when_then_expr */ - 501, /* (586) when_then_list ::= when_then_list when_then_expr */ - 504, /* (587) when_then_expr ::= WHEN common_expression THEN common_expression */ - 502, /* (588) case_when_else_opt ::= */ - 502, /* (589) case_when_else_opt ::= ELSE common_expression */ - 505, /* (590) predicate ::= expr_or_subquery compare_op expr_or_subquery */ - 505, /* (591) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ - 505, /* (592) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ - 505, /* (593) predicate ::= expr_or_subquery IS NULL */ - 505, /* (594) predicate ::= expr_or_subquery IS NOT NULL */ - 505, /* (595) predicate ::= expr_or_subquery in_op in_predicate_value */ - 506, /* (596) compare_op ::= NK_LT */ - 506, /* (597) compare_op ::= NK_GT */ - 506, /* (598) compare_op ::= NK_LE */ - 506, /* (599) compare_op ::= NK_GE */ - 506, /* (600) compare_op ::= NK_NE */ - 506, /* (601) compare_op ::= NK_EQ */ - 506, /* (602) compare_op ::= LIKE */ - 506, /* (603) compare_op ::= NOT LIKE */ - 506, /* (604) compare_op ::= MATCH */ - 506, /* (605) compare_op ::= NMATCH */ - 506, /* (606) compare_op ::= CONTAINS */ - 507, /* (607) in_op ::= IN */ - 507, /* (608) in_op ::= NOT IN */ - 508, /* (609) in_predicate_value ::= NK_LP literal_list NK_RP */ - 509, /* (610) boolean_value_expression ::= boolean_primary */ - 509, /* (611) boolean_value_expression ::= NOT boolean_primary */ - 509, /* (612) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ - 509, /* (613) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ - 510, /* (614) boolean_primary ::= predicate */ - 510, /* (615) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ - 503, /* (616) common_expression ::= expr_or_subquery */ - 503, /* (617) common_expression ::= boolean_value_expression */ - 511, /* (618) from_clause_opt ::= */ - 511, /* (619) from_clause_opt ::= FROM table_reference_list */ - 512, /* (620) table_reference_list ::= table_reference */ - 512, /* (621) table_reference_list ::= table_reference_list NK_COMMA table_reference */ - 513, /* (622) table_reference ::= table_primary */ - 513, /* (623) table_reference ::= joined_table */ - 514, /* (624) table_primary ::= table_name alias_opt */ - 514, /* (625) table_primary ::= db_name NK_DOT table_name alias_opt */ - 514, /* (626) table_primary ::= subquery alias_opt */ - 514, /* (627) table_primary ::= parenthesized_joined_table */ - 516, /* (628) alias_opt ::= */ - 516, /* (629) alias_opt ::= table_alias */ - 516, /* (630) alias_opt ::= AS table_alias */ - 518, /* (631) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - 518, /* (632) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ - 515, /* (633) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ - 519, /* (634) join_type ::= */ - 519, /* (635) join_type ::= INNER */ - 519, /* (636) join_type ::= LEFT */ - 519, /* (637) join_type ::= RIGHT */ - 519, /* (638) join_type ::= FULL */ - 520, /* (639) join_subtype ::= */ - 520, /* (640) join_subtype ::= OUTER */ - 520, /* (641) join_subtype ::= SEMI */ - 520, /* (642) join_subtype ::= ANTI */ - 520, /* (643) join_subtype ::= ASOF */ - 520, /* (644) join_subtype ::= WINDOW */ - 521, /* (645) join_on_clause_opt ::= */ - 521, /* (646) join_on_clause_opt ::= ON search_condition */ - 522, /* (647) window_offset_clause_opt ::= */ - 522, /* (648) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ - 524, /* (649) window_offset_literal ::= NK_VARIABLE */ - 524, /* (650) window_offset_literal ::= NK_MINUS NK_VARIABLE */ - 523, /* (651) jlimit_clause_opt ::= */ - 523, /* (652) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ - 525, /* (653) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ - 526, /* (654) hint_list ::= */ - 526, /* (655) hint_list ::= NK_HINT */ - 528, /* (656) tag_mode_opt ::= */ - 528, /* (657) tag_mode_opt ::= TAGS */ - 527, /* (658) set_quantifier_opt ::= */ - 527, /* (659) set_quantifier_opt ::= DISTINCT */ - 527, /* (660) set_quantifier_opt ::= ALL */ - 529, /* (661) select_list ::= select_item */ - 529, /* (662) select_list ::= select_list NK_COMMA select_item */ - 537, /* (663) select_item ::= NK_STAR */ - 537, /* (664) select_item ::= common_expression */ - 537, /* (665) select_item ::= common_expression column_alias */ - 537, /* (666) select_item ::= common_expression AS column_alias */ - 537, /* (667) select_item ::= table_name NK_DOT NK_STAR */ - 464, /* (668) where_clause_opt ::= */ - 464, /* (669) where_clause_opt ::= WHERE search_condition */ - 530, /* (670) partition_by_clause_opt ::= */ - 530, /* (671) partition_by_clause_opt ::= PARTITION BY partition_list */ - 538, /* (672) partition_list ::= partition_item */ - 538, /* (673) partition_list ::= partition_list NK_COMMA partition_item */ - 539, /* (674) partition_item ::= expr_or_subquery */ - 539, /* (675) partition_item ::= expr_or_subquery column_alias */ - 539, /* (676) partition_item ::= expr_or_subquery AS column_alias */ - 534, /* (677) twindow_clause_opt ::= */ - 534, /* (678) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ - 534, /* (679) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ - 534, /* (680) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - 534, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - 534, /* (682) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ - 534, /* (683) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ - 534, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ - 457, /* (685) sliding_opt ::= */ - 457, /* (686) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ - 540, /* (687) interval_sliding_duration_literal ::= NK_VARIABLE */ - 540, /* (688) interval_sliding_duration_literal ::= NK_STRING */ - 540, /* (689) interval_sliding_duration_literal ::= NK_INTEGER */ - 533, /* (690) fill_opt ::= */ - 533, /* (691) fill_opt ::= FILL NK_LP fill_mode NK_RP */ - 533, /* (692) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ - 533, /* (693) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ - 541, /* (694) fill_mode ::= NONE */ - 541, /* (695) fill_mode ::= PREV */ - 541, /* (696) fill_mode ::= NULL */ - 541, /* (697) fill_mode ::= NULL_F */ - 541, /* (698) fill_mode ::= LINEAR */ - 541, /* (699) fill_mode ::= NEXT */ - 535, /* (700) group_by_clause_opt ::= */ - 535, /* (701) group_by_clause_opt ::= GROUP BY group_by_list */ - 542, /* (702) group_by_list ::= expr_or_subquery */ - 542, /* (703) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ - 536, /* (704) having_clause_opt ::= */ - 536, /* (705) having_clause_opt ::= HAVING search_condition */ - 531, /* (706) range_opt ::= */ - 531, /* (707) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ - 531, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ - 532, /* (709) every_opt ::= */ - 532, /* (710) every_opt ::= EVERY NK_LP duration_literal NK_RP */ - 543, /* (711) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ - 544, /* (712) query_simple ::= query_specification */ - 544, /* (713) query_simple ::= union_query_expression */ - 548, /* (714) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ - 548, /* (715) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ - 549, /* (716) query_simple_or_subquery ::= query_simple */ - 549, /* (717) query_simple_or_subquery ::= subquery */ - 463, /* (718) query_or_subquery ::= query_expression */ - 463, /* (719) query_or_subquery ::= subquery */ - 545, /* (720) order_by_clause_opt ::= */ - 545, /* (721) order_by_clause_opt ::= ORDER BY sort_specification_list */ - 546, /* (722) slimit_clause_opt ::= */ - 546, /* (723) slimit_clause_opt ::= SLIMIT NK_INTEGER */ - 546, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - 546, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 547, /* (726) limit_clause_opt ::= */ - 547, /* (727) limit_clause_opt ::= LIMIT NK_INTEGER */ - 547, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ - 547, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 517, /* (730) subquery ::= NK_LP query_expression NK_RP */ - 517, /* (731) subquery ::= NK_LP subquery NK_RP */ - 394, /* (732) search_condition ::= common_expression */ - 550, /* (733) sort_specification_list ::= sort_specification */ - 550, /* (734) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ - 551, /* (735) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ - 552, /* (736) ordering_specification_opt ::= */ - 552, /* (737) ordering_specification_opt ::= ASC */ - 552, /* (738) ordering_specification_opt ::= DESC */ - 553, /* (739) null_ordering_opt ::= */ - 553, /* (740) null_ordering_opt ::= NULLS FIRST */ - 553, /* (741) null_ordering_opt ::= NULLS LAST */ - 422, /* (742) column_options ::= */ - 422, /* (743) column_options ::= column_options PRIMARY KEY */ - 422, /* (744) column_options ::= column_options ENCODE NK_STRING */ - 422, /* (745) column_options ::= column_options COMPRESS NK_STRING */ - 422, /* (746) column_options ::= column_options LEVEL NK_STRING */ + 376, /* (430) cmd ::= BALANCE VGROUP LEADER DATABASE db_name */ + 376, /* (431) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + 376, /* (432) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + 376, /* (433) cmd ::= SPLIT VGROUP NK_INTEGER */ + 485, /* (434) on_vgroup_id ::= */ + 485, /* (435) on_vgroup_id ::= ON NK_INTEGER */ + 486, /* (436) dnode_list ::= DNODE NK_INTEGER */ + 486, /* (437) dnode_list ::= dnode_list DNODE NK_INTEGER */ + 376, /* (438) cmd ::= DELETE FROM full_table_name where_clause_opt */ + 376, /* (439) cmd ::= query_or_subquery */ + 376, /* (440) cmd ::= insert_query */ + 468, /* (441) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + 468, /* (442) insert_query ::= INSERT INTO full_table_name query_or_subquery */ + 423, /* (443) tags_literal ::= NK_INTEGER */ + 423, /* (444) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ + 423, /* (445) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ + 423, /* (446) tags_literal ::= NK_PLUS NK_INTEGER */ + 423, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ + 423, /* (448) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ + 423, /* (449) tags_literal ::= NK_MINUS NK_INTEGER */ + 423, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ + 423, /* (451) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ + 423, /* (452) tags_literal ::= NK_FLOAT */ + 423, /* (453) tags_literal ::= NK_PLUS NK_FLOAT */ + 423, /* (454) tags_literal ::= NK_MINUS NK_FLOAT */ + 423, /* (455) tags_literal ::= NK_BIN */ + 423, /* (456) tags_literal ::= NK_BIN NK_PLUS duration_literal */ + 423, /* (457) tags_literal ::= NK_BIN NK_MINUS duration_literal */ + 423, /* (458) tags_literal ::= NK_PLUS NK_BIN */ + 423, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ + 423, /* (460) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ + 423, /* (461) tags_literal ::= NK_MINUS NK_BIN */ + 423, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ + 423, /* (463) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ + 423, /* (464) tags_literal ::= NK_HEX */ + 423, /* (465) tags_literal ::= NK_HEX NK_PLUS duration_literal */ + 423, /* (466) tags_literal ::= NK_HEX NK_MINUS duration_literal */ + 423, /* (467) tags_literal ::= NK_PLUS NK_HEX */ + 423, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ + 423, /* (469) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ + 423, /* (470) tags_literal ::= NK_MINUS NK_HEX */ + 423, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ + 423, /* (472) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ + 423, /* (473) tags_literal ::= NK_STRING */ + 423, /* (474) tags_literal ::= NK_STRING NK_PLUS duration_literal */ + 423, /* (475) tags_literal ::= NK_STRING NK_MINUS duration_literal */ + 423, /* (476) tags_literal ::= NK_BOOL */ + 423, /* (477) tags_literal ::= NULL */ + 423, /* (478) tags_literal ::= literal_func */ + 423, /* (479) tags_literal ::= literal_func NK_PLUS duration_literal */ + 423, /* (480) tags_literal ::= literal_func NK_MINUS duration_literal */ + 426, /* (481) tags_literal_list ::= tags_literal */ + 426, /* (482) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ + 379, /* (483) literal ::= NK_INTEGER */ + 379, /* (484) literal ::= NK_FLOAT */ + 379, /* (485) literal ::= NK_STRING */ + 379, /* (486) literal ::= NK_BOOL */ + 379, /* (487) literal ::= TIMESTAMP NK_STRING */ + 379, /* (488) literal ::= duration_literal */ + 379, /* (489) literal ::= NULL */ + 379, /* (490) literal ::= NK_QUESTION */ + 436, /* (491) duration_literal ::= NK_VARIABLE */ + 408, /* (492) signed ::= NK_INTEGER */ + 408, /* (493) signed ::= NK_PLUS NK_INTEGER */ + 408, /* (494) signed ::= NK_MINUS NK_INTEGER */ + 408, /* (495) signed ::= NK_FLOAT */ + 408, /* (496) signed ::= NK_PLUS NK_FLOAT */ + 408, /* (497) signed ::= NK_MINUS NK_FLOAT */ + 488, /* (498) signed_literal ::= signed */ + 488, /* (499) signed_literal ::= NK_STRING */ + 488, /* (500) signed_literal ::= NK_BOOL */ + 488, /* (501) signed_literal ::= TIMESTAMP NK_STRING */ + 488, /* (502) signed_literal ::= duration_literal */ + 488, /* (503) signed_literal ::= NULL */ + 488, /* (504) signed_literal ::= literal_func */ + 488, /* (505) signed_literal ::= NK_QUESTION */ + 489, /* (506) literal_list ::= signed_literal */ + 489, /* (507) literal_list ::= literal_list NK_COMMA signed_literal */ + 391, /* (508) db_name ::= NK_ID */ + 392, /* (509) table_name ::= NK_ID */ + 420, /* (510) column_name ::= NK_ID */ + 438, /* (511) function_name ::= NK_ID */ + 474, /* (512) view_name ::= NK_ID */ + 490, /* (513) table_alias ::= NK_ID */ + 449, /* (514) column_alias ::= NK_ID */ + 449, /* (515) column_alias ::= NK_ALIAS */ + 384, /* (516) user_name ::= NK_ID */ + 393, /* (517) topic_name ::= NK_ID */ + 475, /* (518) stream_name ::= NK_ID */ + 465, /* (519) cgroup_name ::= NK_ID */ + 456, /* (520) index_name ::= NK_ID */ + 450, /* (521) tsma_name ::= NK_ID */ + 491, /* (522) expr_or_subquery ::= expression */ + 484, /* (523) expression ::= literal */ + 484, /* (524) expression ::= pseudo_column */ + 484, /* (525) expression ::= column_reference */ + 484, /* (526) expression ::= function_expression */ + 484, /* (527) expression ::= case_when_expression */ + 484, /* (528) expression ::= NK_LP expression NK_RP */ + 484, /* (529) expression ::= NK_PLUS expr_or_subquery */ + 484, /* (530) expression ::= NK_MINUS expr_or_subquery */ + 484, /* (531) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + 484, /* (532) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + 484, /* (533) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + 484, /* (534) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + 484, /* (535) expression ::= expr_or_subquery NK_REM expr_or_subquery */ + 484, /* (536) expression ::= column_reference NK_ARROW NK_STRING */ + 484, /* (537) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + 484, /* (538) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + 461, /* (539) expression_list ::= expr_or_subquery */ + 461, /* (540) expression_list ::= expression_list NK_COMMA expr_or_subquery */ + 493, /* (541) column_reference ::= column_name */ + 493, /* (542) column_reference ::= table_name NK_DOT column_name */ + 493, /* (543) column_reference ::= NK_ALIAS */ + 493, /* (544) column_reference ::= table_name NK_DOT NK_ALIAS */ + 492, /* (545) pseudo_column ::= ROWTS */ + 492, /* (546) pseudo_column ::= TBNAME */ + 492, /* (547) pseudo_column ::= table_name NK_DOT TBNAME */ + 492, /* (548) pseudo_column ::= QSTART */ + 492, /* (549) pseudo_column ::= QEND */ + 492, /* (550) pseudo_column ::= QDURATION */ + 492, /* (551) pseudo_column ::= WSTART */ + 492, /* (552) pseudo_column ::= WEND */ + 492, /* (553) pseudo_column ::= WDURATION */ + 492, /* (554) pseudo_column ::= IROWTS */ + 492, /* (555) pseudo_column ::= ISFILLED */ + 492, /* (556) pseudo_column ::= QTAGS */ + 494, /* (557) function_expression ::= function_name NK_LP expression_list NK_RP */ + 494, /* (558) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ + 494, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + 494, /* (560) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ + 494, /* (561) function_expression ::= literal_func */ + 487, /* (562) literal_func ::= noarg_func NK_LP NK_RP */ + 487, /* (563) literal_func ::= NOW */ + 487, /* (564) literal_func ::= TODAY */ + 498, /* (565) noarg_func ::= NOW */ + 498, /* (566) noarg_func ::= TODAY */ + 498, /* (567) noarg_func ::= TIMEZONE */ + 498, /* (568) noarg_func ::= DATABASE */ + 498, /* (569) noarg_func ::= CLIENT_VERSION */ + 498, /* (570) noarg_func ::= SERVER_VERSION */ + 498, /* (571) noarg_func ::= SERVER_STATUS */ + 498, /* (572) noarg_func ::= CURRENT_USER */ + 498, /* (573) noarg_func ::= USER */ + 496, /* (574) star_func ::= COUNT */ + 496, /* (575) star_func ::= FIRST */ + 496, /* (576) star_func ::= LAST */ + 496, /* (577) star_func ::= LAST_ROW */ + 497, /* (578) star_func_para_list ::= NK_STAR */ + 497, /* (579) star_func_para_list ::= other_para_list */ + 499, /* (580) other_para_list ::= star_func_para */ + 499, /* (581) other_para_list ::= other_para_list NK_COMMA star_func_para */ + 500, /* (582) star_func_para ::= expr_or_subquery */ + 500, /* (583) star_func_para ::= table_name NK_DOT NK_STAR */ + 495, /* (584) case_when_expression ::= CASE when_then_list case_when_else_opt END */ + 495, /* (585) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + 501, /* (586) when_then_list ::= when_then_expr */ + 501, /* (587) when_then_list ::= when_then_list when_then_expr */ + 504, /* (588) when_then_expr ::= WHEN common_expression THEN common_expression */ + 502, /* (589) case_when_else_opt ::= */ + 502, /* (590) case_when_else_opt ::= ELSE common_expression */ + 505, /* (591) predicate ::= expr_or_subquery compare_op expr_or_subquery */ + 505, /* (592) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + 505, /* (593) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + 505, /* (594) predicate ::= expr_or_subquery IS NULL */ + 505, /* (595) predicate ::= expr_or_subquery IS NOT NULL */ + 505, /* (596) predicate ::= expr_or_subquery in_op in_predicate_value */ + 506, /* (597) compare_op ::= NK_LT */ + 506, /* (598) compare_op ::= NK_GT */ + 506, /* (599) compare_op ::= NK_LE */ + 506, /* (600) compare_op ::= NK_GE */ + 506, /* (601) compare_op ::= NK_NE */ + 506, /* (602) compare_op ::= NK_EQ */ + 506, /* (603) compare_op ::= LIKE */ + 506, /* (604) compare_op ::= NOT LIKE */ + 506, /* (605) compare_op ::= MATCH */ + 506, /* (606) compare_op ::= NMATCH */ + 506, /* (607) compare_op ::= CONTAINS */ + 507, /* (608) in_op ::= IN */ + 507, /* (609) in_op ::= NOT IN */ + 508, /* (610) in_predicate_value ::= NK_LP literal_list NK_RP */ + 509, /* (611) boolean_value_expression ::= boolean_primary */ + 509, /* (612) boolean_value_expression ::= NOT boolean_primary */ + 509, /* (613) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + 509, /* (614) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + 510, /* (615) boolean_primary ::= predicate */ + 510, /* (616) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ + 503, /* (617) common_expression ::= expr_or_subquery */ + 503, /* (618) common_expression ::= boolean_value_expression */ + 511, /* (619) from_clause_opt ::= */ + 511, /* (620) from_clause_opt ::= FROM table_reference_list */ + 512, /* (621) table_reference_list ::= table_reference */ + 512, /* (622) table_reference_list ::= table_reference_list NK_COMMA table_reference */ + 513, /* (623) table_reference ::= table_primary */ + 513, /* (624) table_reference ::= joined_table */ + 514, /* (625) table_primary ::= table_name alias_opt */ + 514, /* (626) table_primary ::= db_name NK_DOT table_name alias_opt */ + 514, /* (627) table_primary ::= subquery alias_opt */ + 514, /* (628) table_primary ::= parenthesized_joined_table */ + 516, /* (629) alias_opt ::= */ + 516, /* (630) alias_opt ::= table_alias */ + 516, /* (631) alias_opt ::= AS table_alias */ + 518, /* (632) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + 518, /* (633) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ + 515, /* (634) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ + 519, /* (635) join_type ::= */ + 519, /* (636) join_type ::= INNER */ + 519, /* (637) join_type ::= LEFT */ + 519, /* (638) join_type ::= RIGHT */ + 519, /* (639) join_type ::= FULL */ + 520, /* (640) join_subtype ::= */ + 520, /* (641) join_subtype ::= OUTER */ + 520, /* (642) join_subtype ::= SEMI */ + 520, /* (643) join_subtype ::= ANTI */ + 520, /* (644) join_subtype ::= ASOF */ + 520, /* (645) join_subtype ::= WINDOW */ + 521, /* (646) join_on_clause_opt ::= */ + 521, /* (647) join_on_clause_opt ::= ON search_condition */ + 522, /* (648) window_offset_clause_opt ::= */ + 522, /* (649) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ + 524, /* (650) window_offset_literal ::= NK_VARIABLE */ + 524, /* (651) window_offset_literal ::= NK_MINUS NK_VARIABLE */ + 523, /* (652) jlimit_clause_opt ::= */ + 523, /* (653) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ + 525, /* (654) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + 526, /* (655) hint_list ::= */ + 526, /* (656) hint_list ::= NK_HINT */ + 528, /* (657) tag_mode_opt ::= */ + 528, /* (658) tag_mode_opt ::= TAGS */ + 527, /* (659) set_quantifier_opt ::= */ + 527, /* (660) set_quantifier_opt ::= DISTINCT */ + 527, /* (661) set_quantifier_opt ::= ALL */ + 529, /* (662) select_list ::= select_item */ + 529, /* (663) select_list ::= select_list NK_COMMA select_item */ + 537, /* (664) select_item ::= NK_STAR */ + 537, /* (665) select_item ::= common_expression */ + 537, /* (666) select_item ::= common_expression column_alias */ + 537, /* (667) select_item ::= common_expression AS column_alias */ + 537, /* (668) select_item ::= table_name NK_DOT NK_STAR */ + 464, /* (669) where_clause_opt ::= */ + 464, /* (670) where_clause_opt ::= WHERE search_condition */ + 530, /* (671) partition_by_clause_opt ::= */ + 530, /* (672) partition_by_clause_opt ::= PARTITION BY partition_list */ + 538, /* (673) partition_list ::= partition_item */ + 538, /* (674) partition_list ::= partition_list NK_COMMA partition_item */ + 539, /* (675) partition_item ::= expr_or_subquery */ + 539, /* (676) partition_item ::= expr_or_subquery column_alias */ + 539, /* (677) partition_item ::= expr_or_subquery AS column_alias */ + 534, /* (678) twindow_clause_opt ::= */ + 534, /* (679) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ + 534, /* (680) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + 534, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + 534, /* (682) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + 534, /* (683) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + 534, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ + 534, /* (685) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ + 457, /* (686) sliding_opt ::= */ + 457, /* (687) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ + 540, /* (688) interval_sliding_duration_literal ::= NK_VARIABLE */ + 540, /* (689) interval_sliding_duration_literal ::= NK_STRING */ + 540, /* (690) interval_sliding_duration_literal ::= NK_INTEGER */ + 533, /* (691) fill_opt ::= */ + 533, /* (692) fill_opt ::= FILL NK_LP fill_mode NK_RP */ + 533, /* (693) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ + 533, /* (694) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ + 541, /* (695) fill_mode ::= NONE */ + 541, /* (696) fill_mode ::= PREV */ + 541, /* (697) fill_mode ::= NULL */ + 541, /* (698) fill_mode ::= NULL_F */ + 541, /* (699) fill_mode ::= LINEAR */ + 541, /* (700) fill_mode ::= NEXT */ + 535, /* (701) group_by_clause_opt ::= */ + 535, /* (702) group_by_clause_opt ::= GROUP BY group_by_list */ + 542, /* (703) group_by_list ::= expr_or_subquery */ + 542, /* (704) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + 536, /* (705) having_clause_opt ::= */ + 536, /* (706) having_clause_opt ::= HAVING search_condition */ + 531, /* (707) range_opt ::= */ + 531, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + 531, /* (709) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ + 532, /* (710) every_opt ::= */ + 532, /* (711) every_opt ::= EVERY NK_LP duration_literal NK_RP */ + 543, /* (712) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + 544, /* (713) query_simple ::= query_specification */ + 544, /* (714) query_simple ::= union_query_expression */ + 548, /* (715) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + 548, /* (716) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + 549, /* (717) query_simple_or_subquery ::= query_simple */ + 549, /* (718) query_simple_or_subquery ::= subquery */ + 463, /* (719) query_or_subquery ::= query_expression */ + 463, /* (720) query_or_subquery ::= subquery */ + 545, /* (721) order_by_clause_opt ::= */ + 545, /* (722) order_by_clause_opt ::= ORDER BY sort_specification_list */ + 546, /* (723) slimit_clause_opt ::= */ + 546, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER */ + 546, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + 546, /* (726) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 547, /* (727) limit_clause_opt ::= */ + 547, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER */ + 547, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ + 547, /* (730) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 517, /* (731) subquery ::= NK_LP query_expression NK_RP */ + 517, /* (732) subquery ::= NK_LP subquery NK_RP */ + 394, /* (733) search_condition ::= common_expression */ + 550, /* (734) sort_specification_list ::= sort_specification */ + 550, /* (735) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ + 551, /* (736) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + 552, /* (737) ordering_specification_opt ::= */ + 552, /* (738) ordering_specification_opt ::= ASC */ + 552, /* (739) ordering_specification_opt ::= DESC */ + 553, /* (740) null_ordering_opt ::= */ + 553, /* (741) null_ordering_opt ::= NULLS FIRST */ + 553, /* (742) null_ordering_opt ::= NULLS LAST */ + 422, /* (743) column_options ::= */ + 422, /* (744) column_options ::= column_options PRIMARY KEY */ + 422, /* (745) column_options ::= column_options ENCODE NK_STRING */ + 422, /* (746) column_options ::= column_options COMPRESS NK_STRING */ + 422, /* (747) column_options ::= column_options LEVEL NK_STRING */ }; /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number @@ -4792,323 +5169,324 @@ static const signed char yyRuleInfoNRhs[] = { -3, /* (427) cmd ::= KILL COMPACT NK_INTEGER */ -2, /* (428) cmd ::= BALANCE VGROUP */ -4, /* (429) cmd ::= BALANCE VGROUP LEADER on_vgroup_id */ - -4, /* (430) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ - -4, /* (431) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ - -3, /* (432) cmd ::= SPLIT VGROUP NK_INTEGER */ - 0, /* (433) on_vgroup_id ::= */ - -2, /* (434) on_vgroup_id ::= ON NK_INTEGER */ - -2, /* (435) dnode_list ::= DNODE NK_INTEGER */ - -3, /* (436) dnode_list ::= dnode_list DNODE NK_INTEGER */ - -4, /* (437) cmd ::= DELETE FROM full_table_name where_clause_opt */ - -1, /* (438) cmd ::= query_or_subquery */ - -1, /* (439) cmd ::= insert_query */ - -7, /* (440) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ - -4, /* (441) insert_query ::= INSERT INTO full_table_name query_or_subquery */ - -1, /* (442) tags_literal ::= NK_INTEGER */ - -3, /* (443) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ - -3, /* (444) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ - -2, /* (445) tags_literal ::= NK_PLUS NK_INTEGER */ - -4, /* (446) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ - -4, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ - -2, /* (448) tags_literal ::= NK_MINUS NK_INTEGER */ - -4, /* (449) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ - -4, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ - -1, /* (451) tags_literal ::= NK_FLOAT */ - -2, /* (452) tags_literal ::= NK_PLUS NK_FLOAT */ - -2, /* (453) tags_literal ::= NK_MINUS NK_FLOAT */ - -1, /* (454) tags_literal ::= NK_BIN */ - -3, /* (455) tags_literal ::= NK_BIN NK_PLUS duration_literal */ - -3, /* (456) tags_literal ::= NK_BIN NK_MINUS duration_literal */ - -2, /* (457) tags_literal ::= NK_PLUS NK_BIN */ - -4, /* (458) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ - -4, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ - -2, /* (460) tags_literal ::= NK_MINUS NK_BIN */ - -4, /* (461) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ - -4, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ - -1, /* (463) tags_literal ::= NK_HEX */ - -3, /* (464) tags_literal ::= NK_HEX NK_PLUS duration_literal */ - -3, /* (465) tags_literal ::= NK_HEX NK_MINUS duration_literal */ - -2, /* (466) tags_literal ::= NK_PLUS NK_HEX */ - -4, /* (467) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ - -4, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ - -2, /* (469) tags_literal ::= NK_MINUS NK_HEX */ - -4, /* (470) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ - -4, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ - -1, /* (472) tags_literal ::= NK_STRING */ - -3, /* (473) tags_literal ::= NK_STRING NK_PLUS duration_literal */ - -3, /* (474) tags_literal ::= NK_STRING NK_MINUS duration_literal */ - -1, /* (475) tags_literal ::= NK_BOOL */ - -1, /* (476) tags_literal ::= NULL */ - -1, /* (477) tags_literal ::= literal_func */ - -3, /* (478) tags_literal ::= literal_func NK_PLUS duration_literal */ - -3, /* (479) tags_literal ::= literal_func NK_MINUS duration_literal */ - -1, /* (480) tags_literal_list ::= tags_literal */ - -3, /* (481) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ - -1, /* (482) literal ::= NK_INTEGER */ - -1, /* (483) literal ::= NK_FLOAT */ - -1, /* (484) literal ::= NK_STRING */ - -1, /* (485) literal ::= NK_BOOL */ - -2, /* (486) literal ::= TIMESTAMP NK_STRING */ - -1, /* (487) literal ::= duration_literal */ - -1, /* (488) literal ::= NULL */ - -1, /* (489) literal ::= NK_QUESTION */ - -1, /* (490) duration_literal ::= NK_VARIABLE */ - -1, /* (491) signed ::= NK_INTEGER */ - -2, /* (492) signed ::= NK_PLUS NK_INTEGER */ - -2, /* (493) signed ::= NK_MINUS NK_INTEGER */ - -1, /* (494) signed ::= NK_FLOAT */ - -2, /* (495) signed ::= NK_PLUS NK_FLOAT */ - -2, /* (496) signed ::= NK_MINUS NK_FLOAT */ - -1, /* (497) signed_literal ::= signed */ - -1, /* (498) signed_literal ::= NK_STRING */ - -1, /* (499) signed_literal ::= NK_BOOL */ - -2, /* (500) signed_literal ::= TIMESTAMP NK_STRING */ - -1, /* (501) signed_literal ::= duration_literal */ - -1, /* (502) signed_literal ::= NULL */ - -1, /* (503) signed_literal ::= literal_func */ - -1, /* (504) signed_literal ::= NK_QUESTION */ - -1, /* (505) literal_list ::= signed_literal */ - -3, /* (506) literal_list ::= literal_list NK_COMMA signed_literal */ - -1, /* (507) db_name ::= NK_ID */ - -1, /* (508) table_name ::= NK_ID */ - -1, /* (509) column_name ::= NK_ID */ - -1, /* (510) function_name ::= NK_ID */ - -1, /* (511) view_name ::= NK_ID */ - -1, /* (512) table_alias ::= NK_ID */ - -1, /* (513) column_alias ::= NK_ID */ - -1, /* (514) column_alias ::= NK_ALIAS */ - -1, /* (515) user_name ::= NK_ID */ - -1, /* (516) topic_name ::= NK_ID */ - -1, /* (517) stream_name ::= NK_ID */ - -1, /* (518) cgroup_name ::= NK_ID */ - -1, /* (519) index_name ::= NK_ID */ - -1, /* (520) tsma_name ::= NK_ID */ - -1, /* (521) expr_or_subquery ::= expression */ - -1, /* (522) expression ::= literal */ - -1, /* (523) expression ::= pseudo_column */ - -1, /* (524) expression ::= column_reference */ - -1, /* (525) expression ::= function_expression */ - -1, /* (526) expression ::= case_when_expression */ - -3, /* (527) expression ::= NK_LP expression NK_RP */ - -2, /* (528) expression ::= NK_PLUS expr_or_subquery */ - -2, /* (529) expression ::= NK_MINUS expr_or_subquery */ - -3, /* (530) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ - -3, /* (531) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ - -3, /* (532) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ - -3, /* (533) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ - -3, /* (534) expression ::= expr_or_subquery NK_REM expr_or_subquery */ - -3, /* (535) expression ::= column_reference NK_ARROW NK_STRING */ - -3, /* (536) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ - -3, /* (537) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ - -1, /* (538) expression_list ::= expr_or_subquery */ - -3, /* (539) expression_list ::= expression_list NK_COMMA expr_or_subquery */ - -1, /* (540) column_reference ::= column_name */ - -3, /* (541) column_reference ::= table_name NK_DOT column_name */ - -1, /* (542) column_reference ::= NK_ALIAS */ - -3, /* (543) column_reference ::= table_name NK_DOT NK_ALIAS */ - -1, /* (544) pseudo_column ::= ROWTS */ - -1, /* (545) pseudo_column ::= TBNAME */ - -3, /* (546) pseudo_column ::= table_name NK_DOT TBNAME */ - -1, /* (547) pseudo_column ::= QSTART */ - -1, /* (548) pseudo_column ::= QEND */ - -1, /* (549) pseudo_column ::= QDURATION */ - -1, /* (550) pseudo_column ::= WSTART */ - -1, /* (551) pseudo_column ::= WEND */ - -1, /* (552) pseudo_column ::= WDURATION */ - -1, /* (553) pseudo_column ::= IROWTS */ - -1, /* (554) pseudo_column ::= ISFILLED */ - -1, /* (555) pseudo_column ::= QTAGS */ - -4, /* (556) function_expression ::= function_name NK_LP expression_list NK_RP */ - -4, /* (557) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ - -6, /* (558) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - -6, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ - -1, /* (560) function_expression ::= literal_func */ - -3, /* (561) literal_func ::= noarg_func NK_LP NK_RP */ - -1, /* (562) literal_func ::= NOW */ - -1, /* (563) literal_func ::= TODAY */ - -1, /* (564) noarg_func ::= NOW */ - -1, /* (565) noarg_func ::= TODAY */ - -1, /* (566) noarg_func ::= TIMEZONE */ - -1, /* (567) noarg_func ::= DATABASE */ - -1, /* (568) noarg_func ::= CLIENT_VERSION */ - -1, /* (569) noarg_func ::= SERVER_VERSION */ - -1, /* (570) noarg_func ::= SERVER_STATUS */ - -1, /* (571) noarg_func ::= CURRENT_USER */ - -1, /* (572) noarg_func ::= USER */ - -1, /* (573) star_func ::= COUNT */ - -1, /* (574) star_func ::= FIRST */ - -1, /* (575) star_func ::= LAST */ - -1, /* (576) star_func ::= LAST_ROW */ - -1, /* (577) star_func_para_list ::= NK_STAR */ - -1, /* (578) star_func_para_list ::= other_para_list */ - -1, /* (579) other_para_list ::= star_func_para */ - -3, /* (580) other_para_list ::= other_para_list NK_COMMA star_func_para */ - -1, /* (581) star_func_para ::= expr_or_subquery */ - -3, /* (582) star_func_para ::= table_name NK_DOT NK_STAR */ - -4, /* (583) case_when_expression ::= CASE when_then_list case_when_else_opt END */ - -5, /* (584) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ - -1, /* (585) when_then_list ::= when_then_expr */ - -2, /* (586) when_then_list ::= when_then_list when_then_expr */ - -4, /* (587) when_then_expr ::= WHEN common_expression THEN common_expression */ - 0, /* (588) case_when_else_opt ::= */ - -2, /* (589) case_when_else_opt ::= ELSE common_expression */ - -3, /* (590) predicate ::= expr_or_subquery compare_op expr_or_subquery */ - -5, /* (591) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ - -6, /* (592) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ - -3, /* (593) predicate ::= expr_or_subquery IS NULL */ - -4, /* (594) predicate ::= expr_or_subquery IS NOT NULL */ - -3, /* (595) predicate ::= expr_or_subquery in_op in_predicate_value */ - -1, /* (596) compare_op ::= NK_LT */ - -1, /* (597) compare_op ::= NK_GT */ - -1, /* (598) compare_op ::= NK_LE */ - -1, /* (599) compare_op ::= NK_GE */ - -1, /* (600) compare_op ::= NK_NE */ - -1, /* (601) compare_op ::= NK_EQ */ - -1, /* (602) compare_op ::= LIKE */ - -2, /* (603) compare_op ::= NOT LIKE */ - -1, /* (604) compare_op ::= MATCH */ - -1, /* (605) compare_op ::= NMATCH */ - -1, /* (606) compare_op ::= CONTAINS */ - -1, /* (607) in_op ::= IN */ - -2, /* (608) in_op ::= NOT IN */ - -3, /* (609) in_predicate_value ::= NK_LP literal_list NK_RP */ - -1, /* (610) boolean_value_expression ::= boolean_primary */ - -2, /* (611) boolean_value_expression ::= NOT boolean_primary */ - -3, /* (612) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ - -3, /* (613) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ - -1, /* (614) boolean_primary ::= predicate */ - -3, /* (615) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ - -1, /* (616) common_expression ::= expr_or_subquery */ - -1, /* (617) common_expression ::= boolean_value_expression */ - 0, /* (618) from_clause_opt ::= */ - -2, /* (619) from_clause_opt ::= FROM table_reference_list */ - -1, /* (620) table_reference_list ::= table_reference */ - -3, /* (621) table_reference_list ::= table_reference_list NK_COMMA table_reference */ - -1, /* (622) table_reference ::= table_primary */ - -1, /* (623) table_reference ::= joined_table */ - -2, /* (624) table_primary ::= table_name alias_opt */ - -4, /* (625) table_primary ::= db_name NK_DOT table_name alias_opt */ - -2, /* (626) table_primary ::= subquery alias_opt */ - -1, /* (627) table_primary ::= parenthesized_joined_table */ - 0, /* (628) alias_opt ::= */ - -1, /* (629) alias_opt ::= table_alias */ - -2, /* (630) alias_opt ::= AS table_alias */ - -3, /* (631) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - -3, /* (632) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ - -8, /* (633) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ - 0, /* (634) join_type ::= */ - -1, /* (635) join_type ::= INNER */ - -1, /* (636) join_type ::= LEFT */ - -1, /* (637) join_type ::= RIGHT */ - -1, /* (638) join_type ::= FULL */ - 0, /* (639) join_subtype ::= */ - -1, /* (640) join_subtype ::= OUTER */ - -1, /* (641) join_subtype ::= SEMI */ - -1, /* (642) join_subtype ::= ANTI */ - -1, /* (643) join_subtype ::= ASOF */ - -1, /* (644) join_subtype ::= WINDOW */ - 0, /* (645) join_on_clause_opt ::= */ - -2, /* (646) join_on_clause_opt ::= ON search_condition */ - 0, /* (647) window_offset_clause_opt ::= */ - -6, /* (648) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ - -1, /* (649) window_offset_literal ::= NK_VARIABLE */ - -2, /* (650) window_offset_literal ::= NK_MINUS NK_VARIABLE */ - 0, /* (651) jlimit_clause_opt ::= */ - -2, /* (652) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ - -14, /* (653) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ - 0, /* (654) hint_list ::= */ - -1, /* (655) hint_list ::= NK_HINT */ - 0, /* (656) tag_mode_opt ::= */ - -1, /* (657) tag_mode_opt ::= TAGS */ - 0, /* (658) set_quantifier_opt ::= */ - -1, /* (659) set_quantifier_opt ::= DISTINCT */ - -1, /* (660) set_quantifier_opt ::= ALL */ - -1, /* (661) select_list ::= select_item */ - -3, /* (662) select_list ::= select_list NK_COMMA select_item */ - -1, /* (663) select_item ::= NK_STAR */ - -1, /* (664) select_item ::= common_expression */ - -2, /* (665) select_item ::= common_expression column_alias */ - -3, /* (666) select_item ::= common_expression AS column_alias */ - -3, /* (667) select_item ::= table_name NK_DOT NK_STAR */ - 0, /* (668) where_clause_opt ::= */ - -2, /* (669) where_clause_opt ::= WHERE search_condition */ - 0, /* (670) partition_by_clause_opt ::= */ - -3, /* (671) partition_by_clause_opt ::= PARTITION BY partition_list */ - -1, /* (672) partition_list ::= partition_item */ - -3, /* (673) partition_list ::= partition_list NK_COMMA partition_item */ - -1, /* (674) partition_item ::= expr_or_subquery */ - -2, /* (675) partition_item ::= expr_or_subquery column_alias */ - -3, /* (676) partition_item ::= expr_or_subquery AS column_alias */ - 0, /* (677) twindow_clause_opt ::= */ - -6, /* (678) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ - -4, /* (679) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ - -6, /* (680) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - -8, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ - -7, /* (682) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ - -4, /* (683) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ - -6, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ - 0, /* (685) sliding_opt ::= */ - -4, /* (686) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ - -1, /* (687) interval_sliding_duration_literal ::= NK_VARIABLE */ - -1, /* (688) interval_sliding_duration_literal ::= NK_STRING */ - -1, /* (689) interval_sliding_duration_literal ::= NK_INTEGER */ - 0, /* (690) fill_opt ::= */ - -4, /* (691) fill_opt ::= FILL NK_LP fill_mode NK_RP */ - -6, /* (692) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ - -6, /* (693) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ - -1, /* (694) fill_mode ::= NONE */ - -1, /* (695) fill_mode ::= PREV */ - -1, /* (696) fill_mode ::= NULL */ - -1, /* (697) fill_mode ::= NULL_F */ - -1, /* (698) fill_mode ::= LINEAR */ - -1, /* (699) fill_mode ::= NEXT */ - 0, /* (700) group_by_clause_opt ::= */ - -3, /* (701) group_by_clause_opt ::= GROUP BY group_by_list */ - -1, /* (702) group_by_list ::= expr_or_subquery */ - -3, /* (703) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ - 0, /* (704) having_clause_opt ::= */ - -2, /* (705) having_clause_opt ::= HAVING search_condition */ - 0, /* (706) range_opt ::= */ - -6, /* (707) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ - -4, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ - 0, /* (709) every_opt ::= */ - -4, /* (710) every_opt ::= EVERY NK_LP duration_literal NK_RP */ - -4, /* (711) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ - -1, /* (712) query_simple ::= query_specification */ - -1, /* (713) query_simple ::= union_query_expression */ - -4, /* (714) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ - -3, /* (715) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ - -1, /* (716) query_simple_or_subquery ::= query_simple */ - -1, /* (717) query_simple_or_subquery ::= subquery */ - -1, /* (718) query_or_subquery ::= query_expression */ - -1, /* (719) query_or_subquery ::= subquery */ - 0, /* (720) order_by_clause_opt ::= */ - -3, /* (721) order_by_clause_opt ::= ORDER BY sort_specification_list */ - 0, /* (722) slimit_clause_opt ::= */ - -2, /* (723) slimit_clause_opt ::= SLIMIT NK_INTEGER */ - -4, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - -4, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - 0, /* (726) limit_clause_opt ::= */ - -2, /* (727) limit_clause_opt ::= LIMIT NK_INTEGER */ - -4, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ - -4, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - -3, /* (730) subquery ::= NK_LP query_expression NK_RP */ - -3, /* (731) subquery ::= NK_LP subquery NK_RP */ - -1, /* (732) search_condition ::= common_expression */ - -1, /* (733) sort_specification_list ::= sort_specification */ - -3, /* (734) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ - -3, /* (735) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ - 0, /* (736) ordering_specification_opt ::= */ - -1, /* (737) ordering_specification_opt ::= ASC */ - -1, /* (738) ordering_specification_opt ::= DESC */ - 0, /* (739) null_ordering_opt ::= */ - -2, /* (740) null_ordering_opt ::= NULLS FIRST */ - -2, /* (741) null_ordering_opt ::= NULLS LAST */ - 0, /* (742) column_options ::= */ - -3, /* (743) column_options ::= column_options PRIMARY KEY */ - -3, /* (744) column_options ::= column_options ENCODE NK_STRING */ - -3, /* (745) column_options ::= column_options COMPRESS NK_STRING */ - -3, /* (746) column_options ::= column_options LEVEL NK_STRING */ + -5, /* (430) cmd ::= BALANCE VGROUP LEADER DATABASE db_name */ + -4, /* (431) cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + -4, /* (432) cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + -3, /* (433) cmd ::= SPLIT VGROUP NK_INTEGER */ + 0, /* (434) on_vgroup_id ::= */ + -2, /* (435) on_vgroup_id ::= ON NK_INTEGER */ + -2, /* (436) dnode_list ::= DNODE NK_INTEGER */ + -3, /* (437) dnode_list ::= dnode_list DNODE NK_INTEGER */ + -4, /* (438) cmd ::= DELETE FROM full_table_name where_clause_opt */ + -1, /* (439) cmd ::= query_or_subquery */ + -1, /* (440) cmd ::= insert_query */ + -7, /* (441) insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + -4, /* (442) insert_query ::= INSERT INTO full_table_name query_or_subquery */ + -1, /* (443) tags_literal ::= NK_INTEGER */ + -3, /* (444) tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ + -3, /* (445) tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ + -2, /* (446) tags_literal ::= NK_PLUS NK_INTEGER */ + -4, /* (447) tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ + -4, /* (448) tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ + -2, /* (449) tags_literal ::= NK_MINUS NK_INTEGER */ + -4, /* (450) tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ + -4, /* (451) tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ + -1, /* (452) tags_literal ::= NK_FLOAT */ + -2, /* (453) tags_literal ::= NK_PLUS NK_FLOAT */ + -2, /* (454) tags_literal ::= NK_MINUS NK_FLOAT */ + -1, /* (455) tags_literal ::= NK_BIN */ + -3, /* (456) tags_literal ::= NK_BIN NK_PLUS duration_literal */ + -3, /* (457) tags_literal ::= NK_BIN NK_MINUS duration_literal */ + -2, /* (458) tags_literal ::= NK_PLUS NK_BIN */ + -4, /* (459) tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ + -4, /* (460) tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ + -2, /* (461) tags_literal ::= NK_MINUS NK_BIN */ + -4, /* (462) tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ + -4, /* (463) tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ + -1, /* (464) tags_literal ::= NK_HEX */ + -3, /* (465) tags_literal ::= NK_HEX NK_PLUS duration_literal */ + -3, /* (466) tags_literal ::= NK_HEX NK_MINUS duration_literal */ + -2, /* (467) tags_literal ::= NK_PLUS NK_HEX */ + -4, /* (468) tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ + -4, /* (469) tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ + -2, /* (470) tags_literal ::= NK_MINUS NK_HEX */ + -4, /* (471) tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ + -4, /* (472) tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ + -1, /* (473) tags_literal ::= NK_STRING */ + -3, /* (474) tags_literal ::= NK_STRING NK_PLUS duration_literal */ + -3, /* (475) tags_literal ::= NK_STRING NK_MINUS duration_literal */ + -1, /* (476) tags_literal ::= NK_BOOL */ + -1, /* (477) tags_literal ::= NULL */ + -1, /* (478) tags_literal ::= literal_func */ + -3, /* (479) tags_literal ::= literal_func NK_PLUS duration_literal */ + -3, /* (480) tags_literal ::= literal_func NK_MINUS duration_literal */ + -1, /* (481) tags_literal_list ::= tags_literal */ + -3, /* (482) tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ + -1, /* (483) literal ::= NK_INTEGER */ + -1, /* (484) literal ::= NK_FLOAT */ + -1, /* (485) literal ::= NK_STRING */ + -1, /* (486) literal ::= NK_BOOL */ + -2, /* (487) literal ::= TIMESTAMP NK_STRING */ + -1, /* (488) literal ::= duration_literal */ + -1, /* (489) literal ::= NULL */ + -1, /* (490) literal ::= NK_QUESTION */ + -1, /* (491) duration_literal ::= NK_VARIABLE */ + -1, /* (492) signed ::= NK_INTEGER */ + -2, /* (493) signed ::= NK_PLUS NK_INTEGER */ + -2, /* (494) signed ::= NK_MINUS NK_INTEGER */ + -1, /* (495) signed ::= NK_FLOAT */ + -2, /* (496) signed ::= NK_PLUS NK_FLOAT */ + -2, /* (497) signed ::= NK_MINUS NK_FLOAT */ + -1, /* (498) signed_literal ::= signed */ + -1, /* (499) signed_literal ::= NK_STRING */ + -1, /* (500) signed_literal ::= NK_BOOL */ + -2, /* (501) signed_literal ::= TIMESTAMP NK_STRING */ + -1, /* (502) signed_literal ::= duration_literal */ + -1, /* (503) signed_literal ::= NULL */ + -1, /* (504) signed_literal ::= literal_func */ + -1, /* (505) signed_literal ::= NK_QUESTION */ + -1, /* (506) literal_list ::= signed_literal */ + -3, /* (507) literal_list ::= literal_list NK_COMMA signed_literal */ + -1, /* (508) db_name ::= NK_ID */ + -1, /* (509) table_name ::= NK_ID */ + -1, /* (510) column_name ::= NK_ID */ + -1, /* (511) function_name ::= NK_ID */ + -1, /* (512) view_name ::= NK_ID */ + -1, /* (513) table_alias ::= NK_ID */ + -1, /* (514) column_alias ::= NK_ID */ + -1, /* (515) column_alias ::= NK_ALIAS */ + -1, /* (516) user_name ::= NK_ID */ + -1, /* (517) topic_name ::= NK_ID */ + -1, /* (518) stream_name ::= NK_ID */ + -1, /* (519) cgroup_name ::= NK_ID */ + -1, /* (520) index_name ::= NK_ID */ + -1, /* (521) tsma_name ::= NK_ID */ + -1, /* (522) expr_or_subquery ::= expression */ + -1, /* (523) expression ::= literal */ + -1, /* (524) expression ::= pseudo_column */ + -1, /* (525) expression ::= column_reference */ + -1, /* (526) expression ::= function_expression */ + -1, /* (527) expression ::= case_when_expression */ + -3, /* (528) expression ::= NK_LP expression NK_RP */ + -2, /* (529) expression ::= NK_PLUS expr_or_subquery */ + -2, /* (530) expression ::= NK_MINUS expr_or_subquery */ + -3, /* (531) expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + -3, /* (532) expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + -3, /* (533) expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + -3, /* (534) expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + -3, /* (535) expression ::= expr_or_subquery NK_REM expr_or_subquery */ + -3, /* (536) expression ::= column_reference NK_ARROW NK_STRING */ + -3, /* (537) expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + -3, /* (538) expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + -1, /* (539) expression_list ::= expr_or_subquery */ + -3, /* (540) expression_list ::= expression_list NK_COMMA expr_or_subquery */ + -1, /* (541) column_reference ::= column_name */ + -3, /* (542) column_reference ::= table_name NK_DOT column_name */ + -1, /* (543) column_reference ::= NK_ALIAS */ + -3, /* (544) column_reference ::= table_name NK_DOT NK_ALIAS */ + -1, /* (545) pseudo_column ::= ROWTS */ + -1, /* (546) pseudo_column ::= TBNAME */ + -3, /* (547) pseudo_column ::= table_name NK_DOT TBNAME */ + -1, /* (548) pseudo_column ::= QSTART */ + -1, /* (549) pseudo_column ::= QEND */ + -1, /* (550) pseudo_column ::= QDURATION */ + -1, /* (551) pseudo_column ::= WSTART */ + -1, /* (552) pseudo_column ::= WEND */ + -1, /* (553) pseudo_column ::= WDURATION */ + -1, /* (554) pseudo_column ::= IROWTS */ + -1, /* (555) pseudo_column ::= ISFILLED */ + -1, /* (556) pseudo_column ::= QTAGS */ + -4, /* (557) function_expression ::= function_name NK_LP expression_list NK_RP */ + -4, /* (558) function_expression ::= star_func NK_LP star_func_para_list NK_RP */ + -6, /* (559) function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + -6, /* (560) function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ + -1, /* (561) function_expression ::= literal_func */ + -3, /* (562) literal_func ::= noarg_func NK_LP NK_RP */ + -1, /* (563) literal_func ::= NOW */ + -1, /* (564) literal_func ::= TODAY */ + -1, /* (565) noarg_func ::= NOW */ + -1, /* (566) noarg_func ::= TODAY */ + -1, /* (567) noarg_func ::= TIMEZONE */ + -1, /* (568) noarg_func ::= DATABASE */ + -1, /* (569) noarg_func ::= CLIENT_VERSION */ + -1, /* (570) noarg_func ::= SERVER_VERSION */ + -1, /* (571) noarg_func ::= SERVER_STATUS */ + -1, /* (572) noarg_func ::= CURRENT_USER */ + -1, /* (573) noarg_func ::= USER */ + -1, /* (574) star_func ::= COUNT */ + -1, /* (575) star_func ::= FIRST */ + -1, /* (576) star_func ::= LAST */ + -1, /* (577) star_func ::= LAST_ROW */ + -1, /* (578) star_func_para_list ::= NK_STAR */ + -1, /* (579) star_func_para_list ::= other_para_list */ + -1, /* (580) other_para_list ::= star_func_para */ + -3, /* (581) other_para_list ::= other_para_list NK_COMMA star_func_para */ + -1, /* (582) star_func_para ::= expr_or_subquery */ + -3, /* (583) star_func_para ::= table_name NK_DOT NK_STAR */ + -4, /* (584) case_when_expression ::= CASE when_then_list case_when_else_opt END */ + -5, /* (585) case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + -1, /* (586) when_then_list ::= when_then_expr */ + -2, /* (587) when_then_list ::= when_then_list when_then_expr */ + -4, /* (588) when_then_expr ::= WHEN common_expression THEN common_expression */ + 0, /* (589) case_when_else_opt ::= */ + -2, /* (590) case_when_else_opt ::= ELSE common_expression */ + -3, /* (591) predicate ::= expr_or_subquery compare_op expr_or_subquery */ + -5, /* (592) predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + -6, /* (593) predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + -3, /* (594) predicate ::= expr_or_subquery IS NULL */ + -4, /* (595) predicate ::= expr_or_subquery IS NOT NULL */ + -3, /* (596) predicate ::= expr_or_subquery in_op in_predicate_value */ + -1, /* (597) compare_op ::= NK_LT */ + -1, /* (598) compare_op ::= NK_GT */ + -1, /* (599) compare_op ::= NK_LE */ + -1, /* (600) compare_op ::= NK_GE */ + -1, /* (601) compare_op ::= NK_NE */ + -1, /* (602) compare_op ::= NK_EQ */ + -1, /* (603) compare_op ::= LIKE */ + -2, /* (604) compare_op ::= NOT LIKE */ + -1, /* (605) compare_op ::= MATCH */ + -1, /* (606) compare_op ::= NMATCH */ + -1, /* (607) compare_op ::= CONTAINS */ + -1, /* (608) in_op ::= IN */ + -2, /* (609) in_op ::= NOT IN */ + -3, /* (610) in_predicate_value ::= NK_LP literal_list NK_RP */ + -1, /* (611) boolean_value_expression ::= boolean_primary */ + -2, /* (612) boolean_value_expression ::= NOT boolean_primary */ + -3, /* (613) boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + -3, /* (614) boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + -1, /* (615) boolean_primary ::= predicate */ + -3, /* (616) boolean_primary ::= NK_LP boolean_value_expression NK_RP */ + -1, /* (617) common_expression ::= expr_or_subquery */ + -1, /* (618) common_expression ::= boolean_value_expression */ + 0, /* (619) from_clause_opt ::= */ + -2, /* (620) from_clause_opt ::= FROM table_reference_list */ + -1, /* (621) table_reference_list ::= table_reference */ + -3, /* (622) table_reference_list ::= table_reference_list NK_COMMA table_reference */ + -1, /* (623) table_reference ::= table_primary */ + -1, /* (624) table_reference ::= joined_table */ + -2, /* (625) table_primary ::= table_name alias_opt */ + -4, /* (626) table_primary ::= db_name NK_DOT table_name alias_opt */ + -2, /* (627) table_primary ::= subquery alias_opt */ + -1, /* (628) table_primary ::= parenthesized_joined_table */ + 0, /* (629) alias_opt ::= */ + -1, /* (630) alias_opt ::= table_alias */ + -2, /* (631) alias_opt ::= AS table_alias */ + -3, /* (632) parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + -3, /* (633) parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ + -8, /* (634) joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ + 0, /* (635) join_type ::= */ + -1, /* (636) join_type ::= INNER */ + -1, /* (637) join_type ::= LEFT */ + -1, /* (638) join_type ::= RIGHT */ + -1, /* (639) join_type ::= FULL */ + 0, /* (640) join_subtype ::= */ + -1, /* (641) join_subtype ::= OUTER */ + -1, /* (642) join_subtype ::= SEMI */ + -1, /* (643) join_subtype ::= ANTI */ + -1, /* (644) join_subtype ::= ASOF */ + -1, /* (645) join_subtype ::= WINDOW */ + 0, /* (646) join_on_clause_opt ::= */ + -2, /* (647) join_on_clause_opt ::= ON search_condition */ + 0, /* (648) window_offset_clause_opt ::= */ + -6, /* (649) window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ + -1, /* (650) window_offset_literal ::= NK_VARIABLE */ + -2, /* (651) window_offset_literal ::= NK_MINUS NK_VARIABLE */ + 0, /* (652) jlimit_clause_opt ::= */ + -2, /* (653) jlimit_clause_opt ::= JLIMIT NK_INTEGER */ + -14, /* (654) query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + 0, /* (655) hint_list ::= */ + -1, /* (656) hint_list ::= NK_HINT */ + 0, /* (657) tag_mode_opt ::= */ + -1, /* (658) tag_mode_opt ::= TAGS */ + 0, /* (659) set_quantifier_opt ::= */ + -1, /* (660) set_quantifier_opt ::= DISTINCT */ + -1, /* (661) set_quantifier_opt ::= ALL */ + -1, /* (662) select_list ::= select_item */ + -3, /* (663) select_list ::= select_list NK_COMMA select_item */ + -1, /* (664) select_item ::= NK_STAR */ + -1, /* (665) select_item ::= common_expression */ + -2, /* (666) select_item ::= common_expression column_alias */ + -3, /* (667) select_item ::= common_expression AS column_alias */ + -3, /* (668) select_item ::= table_name NK_DOT NK_STAR */ + 0, /* (669) where_clause_opt ::= */ + -2, /* (670) where_clause_opt ::= WHERE search_condition */ + 0, /* (671) partition_by_clause_opt ::= */ + -3, /* (672) partition_by_clause_opt ::= PARTITION BY partition_list */ + -1, /* (673) partition_list ::= partition_item */ + -3, /* (674) partition_list ::= partition_list NK_COMMA partition_item */ + -1, /* (675) partition_item ::= expr_or_subquery */ + -2, /* (676) partition_item ::= expr_or_subquery column_alias */ + -3, /* (677) partition_item ::= expr_or_subquery AS column_alias */ + 0, /* (678) twindow_clause_opt ::= */ + -6, /* (679) twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ + -4, /* (680) twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + -6, /* (681) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + -8, /* (682) twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + -7, /* (683) twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + -4, /* (684) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ + -6, /* (685) twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ + 0, /* (686) sliding_opt ::= */ + -4, /* (687) sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ + -1, /* (688) interval_sliding_duration_literal ::= NK_VARIABLE */ + -1, /* (689) interval_sliding_duration_literal ::= NK_STRING */ + -1, /* (690) interval_sliding_duration_literal ::= NK_INTEGER */ + 0, /* (691) fill_opt ::= */ + -4, /* (692) fill_opt ::= FILL NK_LP fill_mode NK_RP */ + -6, /* (693) fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ + -6, /* (694) fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ + -1, /* (695) fill_mode ::= NONE */ + -1, /* (696) fill_mode ::= PREV */ + -1, /* (697) fill_mode ::= NULL */ + -1, /* (698) fill_mode ::= NULL_F */ + -1, /* (699) fill_mode ::= LINEAR */ + -1, /* (700) fill_mode ::= NEXT */ + 0, /* (701) group_by_clause_opt ::= */ + -3, /* (702) group_by_clause_opt ::= GROUP BY group_by_list */ + -1, /* (703) group_by_list ::= expr_or_subquery */ + -3, /* (704) group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + 0, /* (705) having_clause_opt ::= */ + -2, /* (706) having_clause_opt ::= HAVING search_condition */ + 0, /* (707) range_opt ::= */ + -6, /* (708) range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + -4, /* (709) range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ + 0, /* (710) every_opt ::= */ + -4, /* (711) every_opt ::= EVERY NK_LP duration_literal NK_RP */ + -4, /* (712) query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + -1, /* (713) query_simple ::= query_specification */ + -1, /* (714) query_simple ::= union_query_expression */ + -4, /* (715) union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + -3, /* (716) union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + -1, /* (717) query_simple_or_subquery ::= query_simple */ + -1, /* (718) query_simple_or_subquery ::= subquery */ + -1, /* (719) query_or_subquery ::= query_expression */ + -1, /* (720) query_or_subquery ::= subquery */ + 0, /* (721) order_by_clause_opt ::= */ + -3, /* (722) order_by_clause_opt ::= ORDER BY sort_specification_list */ + 0, /* (723) slimit_clause_opt ::= */ + -2, /* (724) slimit_clause_opt ::= SLIMIT NK_INTEGER */ + -4, /* (725) slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + -4, /* (726) slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + 0, /* (727) limit_clause_opt ::= */ + -2, /* (728) limit_clause_opt ::= LIMIT NK_INTEGER */ + -4, /* (729) limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ + -4, /* (730) limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + -3, /* (731) subquery ::= NK_LP query_expression NK_RP */ + -3, /* (732) subquery ::= NK_LP subquery NK_RP */ + -1, /* (733) search_condition ::= common_expression */ + -1, /* (734) sort_specification_list ::= sort_specification */ + -3, /* (735) sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ + -3, /* (736) sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + 0, /* (737) ordering_specification_opt ::= */ + -1, /* (738) ordering_specification_opt ::= ASC */ + -1, /* (739) ordering_specification_opt ::= DESC */ + 0, /* (740) null_ordering_opt ::= */ + -2, /* (741) null_ordering_opt ::= NULLS FIRST */ + -2, /* (742) null_ordering_opt ::= NULLS LAST */ + 0, /* (743) column_options ::= */ + -3, /* (744) column_options ::= column_options PRIMARY KEY */ + -3, /* (745) column_options ::= column_options ENCODE NK_STRING */ + -3, /* (746) column_options ::= column_options COMPRESS NK_STRING */ + -3, /* (747) column_options ::= column_options LEVEL NK_STRING */ }; static void yy_accept(yyParser*); /* Forward Declaration */ @@ -5138,54 +5516,6 @@ static YYACTIONTYPE yy_reduce( (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - yysize = yyRuleInfoNRhs[yyruleno]; - if( yysize ){ - fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", - yyTracePrompt, - yyruleno, yyRuleName[yyruleno], - yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ - yypParser->yyhwm++; - assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yytos>=yypParser->yystackEnd ){ - yyStackOverflow(yypParser); - /* The call to yyStackOverflow() above pops the stack until it is - ** empty, causing the main parser loop to exit. So the return value - ** is never used and does not matter. */ - return 0; - } -#else - if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ - if( yyGrowStack(yypParser) ){ - yyStackOverflow(yypParser); - /* The call to yyStackOverflow() above pops the stack until it is - ** empty, causing the main parser loop to exit. So the return value - ** is never used and does not matter. */ - return 0; - } - yymsp = yypParser->yytos; - } -#endif - } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example @@ -5264,15 +5594,15 @@ static YYACTIONTYPE yy_reduce( case 328: /* tag_list_opt ::= */ yytestcase(yyruleno==328); case 401: /* col_list_opt ::= */ yytestcase(yyruleno==401); case 408: /* tag_def_or_ref_opt ::= */ yytestcase(yyruleno==408); - case 670: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==670); - case 700: /* group_by_clause_opt ::= */ yytestcase(yyruleno==700); - case 720: /* order_by_clause_opt ::= */ yytestcase(yyruleno==720); + case 671: /* partition_by_clause_opt ::= */ yytestcase(yyruleno==671); + case 701: /* group_by_clause_opt ::= */ yytestcase(yyruleno==701); + case 721: /* order_by_clause_opt ::= */ yytestcase(yyruleno==721); { yymsp[1].minor.yy748 = NULL; } break; case 28: /* white_list_opt ::= white_list */ case 239: /* tags_def_opt ::= tags_def */ yytestcase(yyruleno==239); case 409: /* tag_def_or_ref_opt ::= tags_def */ yytestcase(yyruleno==409); - case 578: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==578); + case 579: /* star_func_para_list ::= other_para_list */ yytestcase(yyruleno==579); { yylhsminor.yy748 = yymsp[0].minor.yy748; } yymsp[0].minor.yy748 = yylhsminor.yy748; break; @@ -5357,27 +5687,27 @@ static YYACTIONTYPE yy_reduce( case 172: /* end_opt ::= */ yytestcase(yyruleno==172); case 323: /* like_pattern_opt ::= */ yytestcase(yyruleno==323); case 420: /* subtable_opt ::= */ yytestcase(yyruleno==420); - case 588: /* case_when_else_opt ::= */ yytestcase(yyruleno==588); - case 618: /* from_clause_opt ::= */ yytestcase(yyruleno==618); - case 645: /* join_on_clause_opt ::= */ yytestcase(yyruleno==645); - case 647: /* window_offset_clause_opt ::= */ yytestcase(yyruleno==647); - case 651: /* jlimit_clause_opt ::= */ yytestcase(yyruleno==651); - case 668: /* where_clause_opt ::= */ yytestcase(yyruleno==668); - case 677: /* twindow_clause_opt ::= */ yytestcase(yyruleno==677); - case 685: /* sliding_opt ::= */ yytestcase(yyruleno==685); - case 690: /* fill_opt ::= */ yytestcase(yyruleno==690); - case 704: /* having_clause_opt ::= */ yytestcase(yyruleno==704); - case 706: /* range_opt ::= */ yytestcase(yyruleno==706); - case 709: /* every_opt ::= */ yytestcase(yyruleno==709); - case 722: /* slimit_clause_opt ::= */ yytestcase(yyruleno==722); - case 726: /* limit_clause_opt ::= */ yytestcase(yyruleno==726); + case 589: /* case_when_else_opt ::= */ yytestcase(yyruleno==589); + case 619: /* from_clause_opt ::= */ yytestcase(yyruleno==619); + case 646: /* join_on_clause_opt ::= */ yytestcase(yyruleno==646); + case 648: /* window_offset_clause_opt ::= */ yytestcase(yyruleno==648); + case 652: /* jlimit_clause_opt ::= */ yytestcase(yyruleno==652); + case 669: /* where_clause_opt ::= */ yytestcase(yyruleno==669); + case 678: /* twindow_clause_opt ::= */ yytestcase(yyruleno==678); + case 686: /* sliding_opt ::= */ yytestcase(yyruleno==686); + case 691: /* fill_opt ::= */ yytestcase(yyruleno==691); + case 705: /* having_clause_opt ::= */ yytestcase(yyruleno==705); + case 707: /* range_opt ::= */ yytestcase(yyruleno==707); + case 710: /* every_opt ::= */ yytestcase(yyruleno==710); + case 723: /* slimit_clause_opt ::= */ yytestcase(yyruleno==723); + case 727: /* limit_clause_opt ::= */ yytestcase(yyruleno==727); { yymsp[1].minor.yy600 = NULL; } break; case 53: /* with_opt ::= WITH search_condition */ - case 619: /* from_clause_opt ::= FROM table_reference_list */ yytestcase(yyruleno==619); - case 646: /* join_on_clause_opt ::= ON search_condition */ yytestcase(yyruleno==646); - case 669: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==669); - case 705: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==705); + case 620: /* from_clause_opt ::= FROM table_reference_list */ yytestcase(yyruleno==620); + case 647: /* join_on_clause_opt ::= ON search_condition */ yytestcase(yyruleno==647); + case 670: /* where_clause_opt ::= WHERE search_condition */ yytestcase(yyruleno==670); + case 706: /* having_clause_opt ::= HAVING search_condition */ yytestcase(yyruleno==706); { yymsp[-1].minor.yy600 = yymsp[0].minor.yy600; } break; case 54: /* cmd ::= CREATE ENCRYPT_KEY NK_STRING */ @@ -5423,33 +5753,33 @@ static YYACTIONTYPE yy_reduce( case 358: /* sma_func_name ::= FIRST */ yytestcase(yyruleno==358); case 359: /* sma_func_name ::= LAST */ yytestcase(yyruleno==359); case 360: /* sma_func_name ::= LAST_ROW */ yytestcase(yyruleno==360); - case 507: /* db_name ::= NK_ID */ yytestcase(yyruleno==507); - case 508: /* table_name ::= NK_ID */ yytestcase(yyruleno==508); - case 509: /* column_name ::= NK_ID */ yytestcase(yyruleno==509); - case 510: /* function_name ::= NK_ID */ yytestcase(yyruleno==510); - case 511: /* view_name ::= NK_ID */ yytestcase(yyruleno==511); - case 512: /* table_alias ::= NK_ID */ yytestcase(yyruleno==512); - case 513: /* column_alias ::= NK_ID */ yytestcase(yyruleno==513); - case 514: /* column_alias ::= NK_ALIAS */ yytestcase(yyruleno==514); - case 515: /* user_name ::= NK_ID */ yytestcase(yyruleno==515); - case 516: /* topic_name ::= NK_ID */ yytestcase(yyruleno==516); - case 517: /* stream_name ::= NK_ID */ yytestcase(yyruleno==517); - case 518: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==518); - case 519: /* index_name ::= NK_ID */ yytestcase(yyruleno==519); - case 520: /* tsma_name ::= NK_ID */ yytestcase(yyruleno==520); - case 564: /* noarg_func ::= NOW */ yytestcase(yyruleno==564); - case 565: /* noarg_func ::= TODAY */ yytestcase(yyruleno==565); - case 566: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==566); - case 567: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==567); - case 568: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==568); - case 569: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==569); - case 570: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==570); - case 571: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==571); - case 572: /* noarg_func ::= USER */ yytestcase(yyruleno==572); - case 573: /* star_func ::= COUNT */ yytestcase(yyruleno==573); - case 574: /* star_func ::= FIRST */ yytestcase(yyruleno==574); - case 575: /* star_func ::= LAST */ yytestcase(yyruleno==575); - case 576: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==576); + case 508: /* db_name ::= NK_ID */ yytestcase(yyruleno==508); + case 509: /* table_name ::= NK_ID */ yytestcase(yyruleno==509); + case 510: /* column_name ::= NK_ID */ yytestcase(yyruleno==510); + case 511: /* function_name ::= NK_ID */ yytestcase(yyruleno==511); + case 512: /* view_name ::= NK_ID */ yytestcase(yyruleno==512); + case 513: /* table_alias ::= NK_ID */ yytestcase(yyruleno==513); + case 514: /* column_alias ::= NK_ID */ yytestcase(yyruleno==514); + case 515: /* column_alias ::= NK_ALIAS */ yytestcase(yyruleno==515); + case 516: /* user_name ::= NK_ID */ yytestcase(yyruleno==516); + case 517: /* topic_name ::= NK_ID */ yytestcase(yyruleno==517); + case 518: /* stream_name ::= NK_ID */ yytestcase(yyruleno==518); + case 519: /* cgroup_name ::= NK_ID */ yytestcase(yyruleno==519); + case 520: /* index_name ::= NK_ID */ yytestcase(yyruleno==520); + case 521: /* tsma_name ::= NK_ID */ yytestcase(yyruleno==521); + case 565: /* noarg_func ::= NOW */ yytestcase(yyruleno==565); + case 566: /* noarg_func ::= TODAY */ yytestcase(yyruleno==566); + case 567: /* noarg_func ::= TIMEZONE */ yytestcase(yyruleno==567); + case 568: /* noarg_func ::= DATABASE */ yytestcase(yyruleno==568); + case 569: /* noarg_func ::= CLIENT_VERSION */ yytestcase(yyruleno==569); + case 570: /* noarg_func ::= SERVER_VERSION */ yytestcase(yyruleno==570); + case 571: /* noarg_func ::= SERVER_STATUS */ yytestcase(yyruleno==571); + case 572: /* noarg_func ::= CURRENT_USER */ yytestcase(yyruleno==572); + case 573: /* noarg_func ::= USER */ yytestcase(yyruleno==573); + case 574: /* star_func ::= COUNT */ yytestcase(yyruleno==574); + case 575: /* star_func ::= FIRST */ yytestcase(yyruleno==575); + case 576: /* star_func ::= LAST */ yytestcase(yyruleno==576); + case 577: /* star_func ::= LAST_ROW */ yytestcase(yyruleno==577); { yylhsminor.yy649 = yymsp[0].minor.yy0; } yymsp[0].minor.yy649 = yylhsminor.yy649; break; @@ -5460,16 +5790,16 @@ static YYACTIONTYPE yy_reduce( case 385: /* agg_func_opt ::= */ yytestcase(yyruleno==385); case 391: /* or_replace_opt ::= */ yytestcase(yyruleno==391); case 422: /* ignore_opt ::= */ yytestcase(yyruleno==422); - case 656: /* tag_mode_opt ::= */ yytestcase(yyruleno==656); - case 658: /* set_quantifier_opt ::= */ yytestcase(yyruleno==658); + case 657: /* tag_mode_opt ::= */ yytestcase(yyruleno==657); + case 659: /* set_quantifier_opt ::= */ yytestcase(yyruleno==659); { yymsp[1].minor.yy705 = false; } break; case 70: /* force_opt ::= FORCE */ case 71: /* unsafe_opt ::= UNSAFE */ yytestcase(yyruleno==71); case 379: /* analyze_opt ::= ANALYZE */ yytestcase(yyruleno==379); case 386: /* agg_func_opt ::= AGGREGATE */ yytestcase(yyruleno==386); - case 657: /* tag_mode_opt ::= TAGS */ yytestcase(yyruleno==657); - case 659: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==659); + case 658: /* tag_mode_opt ::= TAGS */ yytestcase(yyruleno==658); + case 660: /* set_quantifier_opt ::= DISTINCT */ yytestcase(yyruleno==660); { yymsp[0].minor.yy705 = true; } break; case 72: /* cmd ::= ALTER CLUSTER NK_STRING */ @@ -5772,7 +6102,7 @@ static YYACTIONTYPE yy_reduce( yymsp[0].minor.yy748 = yylhsminor.yy748; break; case 159: /* integer_list ::= integer_list NK_COMMA NK_INTEGER */ - case 436: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==436); + case 437: /* dnode_list ::= dnode_list DNODE NK_INTEGER */ yytestcase(yyruleno==437); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; @@ -5794,13 +6124,13 @@ static YYACTIONTYPE yy_reduce( case 329: /* tag_list_opt ::= tag_item */ yytestcase(yyruleno==329); case 353: /* func_list ::= func */ yytestcase(yyruleno==353); case 403: /* column_stream_def_list ::= column_stream_def */ yytestcase(yyruleno==403); - case 480: /* tags_literal_list ::= tags_literal */ yytestcase(yyruleno==480); - case 505: /* literal_list ::= signed_literal */ yytestcase(yyruleno==505); - case 579: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==579); - case 585: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==585); - case 661: /* select_list ::= select_item */ yytestcase(yyruleno==661); - case 672: /* partition_list ::= partition_item */ yytestcase(yyruleno==672); - case 733: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==733); + case 481: /* tags_literal_list ::= tags_literal */ yytestcase(yyruleno==481); + case 506: /* literal_list ::= signed_literal */ yytestcase(yyruleno==506); + case 580: /* other_para_list ::= star_func_para */ yytestcase(yyruleno==580); + case 586: /* when_then_list ::= when_then_expr */ yytestcase(yyruleno==586); + case 662: /* select_list ::= select_item */ yytestcase(yyruleno==662); + case 673: /* partition_list ::= partition_item */ yytestcase(yyruleno==673); + case 734: /* sort_specification_list ::= sort_specification */ yytestcase(yyruleno==734); { yylhsminor.yy748 = createNodeList(pCxt, yymsp[0].minor.yy600); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; @@ -5813,12 +6143,12 @@ static YYACTIONTYPE yy_reduce( case 330: /* tag_list_opt ::= tag_list_opt NK_COMMA tag_item */ yytestcase(yyruleno==330); case 354: /* func_list ::= func_list NK_COMMA func */ yytestcase(yyruleno==354); case 404: /* column_stream_def_list ::= column_stream_def_list NK_COMMA column_stream_def */ yytestcase(yyruleno==404); - case 481: /* tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ yytestcase(yyruleno==481); - case 506: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==506); - case 580: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==580); - case 662: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==662); - case 673: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==673); - case 734: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==734); + case 482: /* tags_literal_list ::= tags_literal_list NK_COMMA tags_literal */ yytestcase(yyruleno==482); + case 507: /* literal_list ::= literal_list NK_COMMA signed_literal */ yytestcase(yyruleno==507); + case 581: /* other_para_list ::= other_para_list NK_COMMA star_func_para */ yytestcase(yyruleno==581); + case 663: /* select_list ::= select_list NK_COMMA select_item */ yytestcase(yyruleno==663); + case 674: /* partition_list ::= partition_list NK_COMMA partition_item */ yytestcase(yyruleno==674); + case 735: /* sort_specification_list ::= sort_specification_list NK_COMMA sort_specification */ yytestcase(yyruleno==735); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, yymsp[0].minor.yy600); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; @@ -5861,8 +6191,8 @@ static YYACTIONTYPE yy_reduce( { pCxt->pRootNode = createDropSuperTableStmt(pCxt, yymsp[-1].minor.yy705, yymsp[0].minor.yy600); } break; case 181: /* cmd ::= ALTER TABLE alter_table_clause */ - case 438: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==438); - case 439: /* cmd ::= insert_query */ yytestcase(yyruleno==439); + case 439: /* cmd ::= query_or_subquery */ yytestcase(yyruleno==439); + case 440: /* cmd ::= insert_query */ yytestcase(yyruleno==440); { pCxt->pRootNode = yymsp[0].minor.yy600; } break; case 182: /* cmd ::= ALTER STABLE alter_table_clause */ @@ -5913,7 +6243,7 @@ static YYACTIONTYPE yy_reduce( yymsp[-5].minor.yy600 = yylhsminor.yy600; break; case 195: /* multi_create_clause ::= multi_create_clause create_subtable_clause */ - case 586: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==586); + case 587: /* when_then_list ::= when_then_list when_then_expr */ yytestcase(yyruleno==587); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-1].minor.yy748, yymsp[0].minor.yy600); } yymsp[-1].minor.yy748 = yylhsminor.yy748; break; @@ -6079,12 +6409,12 @@ static YYACTIONTYPE yy_reduce( { yymsp[-1].minor.yy145.type = TABLE_OPTION_TTL; yymsp[-1].minor.yy145.val = yymsp[0].minor.yy0; } break; case 253: /* duration_list ::= duration_literal */ - case 538: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==538); + case 539: /* expression_list ::= expr_or_subquery */ yytestcase(yyruleno==539); { yylhsminor.yy748 = createNodeList(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; case 254: /* duration_list ::= duration_list NK_COMMA duration_literal */ - case 539: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==539); + case 540: /* expression_list ::= expression_list NK_COMMA expr_or_subquery */ yytestcase(yyruleno==540); { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; @@ -6364,7 +6694,7 @@ yymsp[0].minor.yy600); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; case 356: /* sma_func_name ::= function_name */ - case 629: /* alias_opt ::= table_alias */ yytestcase(yyruleno==629); + case 630: /* alias_opt ::= table_alias */ yytestcase(yyruleno==630); { yylhsminor.yy649 = yymsp[0].minor.yy649; } yymsp[0].minor.yy649 = yylhsminor.yy649; break; @@ -6437,11 +6767,11 @@ yymsp[0].minor.yy600); } { pCxt->pRootNode = createDropFunctionStmt(pCxt, yymsp[-1].minor.yy705, &yymsp[0].minor.yy649); } break; case 389: /* language_opt ::= */ - case 433: /* on_vgroup_id ::= */ yytestcase(yyruleno==433); + case 434: /* on_vgroup_id ::= */ yytestcase(yyruleno==434); { yymsp[1].minor.yy649 = nil_token; } break; case 390: /* language_opt ::= LANGUAGE NK_STRING */ - case 434: /* on_vgroup_id ::= ON NK_INTEGER */ yytestcase(yyruleno==434); + case 435: /* on_vgroup_id ::= ON NK_INTEGER */ yytestcase(yyruleno==435); { yymsp[-1].minor.yy649 = yymsp[0].minor.yy0; } break; case 393: /* cmd ::= CREATE or_replace_opt VIEW full_view_name AS query_or_subquery */ @@ -6475,11 +6805,11 @@ yymsp[0].minor.yy600); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; case 406: /* stream_col_options ::= */ - case 742: /* column_options ::= */ yytestcase(yyruleno==742); + case 743: /* column_options ::= */ yytestcase(yyruleno==743); { yymsp[1].minor.yy600 = createDefaultColumnOptions(pCxt); } break; case 407: /* stream_col_options ::= stream_col_options PRIMARY KEY */ - case 743: /* column_options ::= column_options PRIMARY KEY */ yytestcase(yyruleno==743); + case 744: /* column_options ::= column_options PRIMARY KEY */ yytestcase(yyruleno==744); { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_PRIMARYKEY, NULL); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; @@ -6513,8 +6843,8 @@ yymsp[0].minor.yy600); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; case 421: /* subtable_opt ::= SUBTABLE NK_LP expression NK_RP */ - case 686: /* sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ yytestcase(yyruleno==686); - case 710: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==710); + case 687: /* sliding_opt ::= SLIDING NK_LP interval_sliding_duration_literal NK_RP */ yytestcase(yyruleno==687); + case 711: /* every_opt ::= EVERY NK_LP duration_literal NK_RP */ yytestcase(yyruleno==711); { yymsp[-3].minor.yy600 = releaseRawExprNode(pCxt, yymsp[-1].minor.yy600); } break; case 424: /* cmd ::= KILL CONNECTION NK_INTEGER */ @@ -6535,41 +6865,44 @@ yymsp[0].minor.yy600); } case 429: /* cmd ::= BALANCE VGROUP LEADER on_vgroup_id */ { pCxt->pRootNode = createBalanceVgroupLeaderStmt(pCxt, &yymsp[0].minor.yy649); } break; - case 430: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ + case 430: /* cmd ::= BALANCE VGROUP LEADER DATABASE db_name */ +{ pCxt->pRootNode = createBalanceVgroupLeaderDBNameStmt(pCxt, &yymsp[0].minor.yy649); } + break; + case 431: /* cmd ::= MERGE VGROUP NK_INTEGER NK_INTEGER */ { pCxt->pRootNode = createMergeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0); } break; - case 431: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ + case 432: /* cmd ::= REDISTRIBUTE VGROUP NK_INTEGER dnode_list */ { pCxt->pRootNode = createRedistributeVgroupStmt(pCxt, &yymsp[-1].minor.yy0, yymsp[0].minor.yy748); } break; - case 432: /* cmd ::= SPLIT VGROUP NK_INTEGER */ + case 433: /* cmd ::= SPLIT VGROUP NK_INTEGER */ { pCxt->pRootNode = createSplitVgroupStmt(pCxt, &yymsp[0].minor.yy0); } break; - case 435: /* dnode_list ::= DNODE NK_INTEGER */ + case 436: /* dnode_list ::= DNODE NK_INTEGER */ { yymsp[-1].minor.yy748 = createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BIGINT, &yymsp[0].minor.yy0)); } break; - case 437: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ + case 438: /* cmd ::= DELETE FROM full_table_name where_clause_opt */ { pCxt->pRootNode = createDeleteStmt(pCxt, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } break; - case 440: /* insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ + case 441: /* insert_query ::= INSERT INTO full_table_name NK_LP col_name_list NK_RP query_or_subquery */ { yymsp[-6].minor.yy600 = createInsertStmt(pCxt, yymsp[-4].minor.yy600, yymsp[-2].minor.yy748, yymsp[0].minor.yy600); } break; - case 441: /* insert_query ::= INSERT INTO full_table_name query_or_subquery */ + case 442: /* insert_query ::= INSERT INTO full_table_name query_or_subquery */ { yymsp[-3].minor.yy600 = createInsertStmt(pCxt, yymsp[-1].minor.yy600, NULL, yymsp[0].minor.yy600); } break; - case 442: /* tags_literal ::= NK_INTEGER */ - case 454: /* tags_literal ::= NK_BIN */ yytestcase(yyruleno==454); - case 463: /* tags_literal ::= NK_HEX */ yytestcase(yyruleno==463); + case 443: /* tags_literal ::= NK_INTEGER */ + case 455: /* tags_literal ::= NK_BIN */ yytestcase(yyruleno==455); + case 464: /* tags_literal ::= NK_HEX */ yytestcase(yyruleno==464); { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 443: /* tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ - case 444: /* tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==444); - case 455: /* tags_literal ::= NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==455); - case 456: /* tags_literal ::= NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==456); - case 464: /* tags_literal ::= NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==464); - case 465: /* tags_literal ::= NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==465); - case 473: /* tags_literal ::= NK_STRING NK_PLUS duration_literal */ yytestcase(yyruleno==473); - case 474: /* tags_literal ::= NK_STRING NK_MINUS duration_literal */ yytestcase(yyruleno==474); + case 444: /* tags_literal ::= NK_INTEGER NK_PLUS duration_literal */ + case 445: /* tags_literal ::= NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==445); + case 456: /* tags_literal ::= NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==456); + case 457: /* tags_literal ::= NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==457); + case 465: /* tags_literal ::= NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==465); + case 466: /* tags_literal ::= NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==466); + case 474: /* tags_literal ::= NK_STRING NK_PLUS duration_literal */ yytestcase(yyruleno==474); + case 475: /* tags_literal ::= NK_STRING NK_MINUS duration_literal */ yytestcase(yyruleno==475); { SToken l = yymsp[-2].minor.yy0; SToken r = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6578,12 +6911,12 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 445: /* tags_literal ::= NK_PLUS NK_INTEGER */ - case 448: /* tags_literal ::= NK_MINUS NK_INTEGER */ yytestcase(yyruleno==448); - case 457: /* tags_literal ::= NK_PLUS NK_BIN */ yytestcase(yyruleno==457); - case 460: /* tags_literal ::= NK_MINUS NK_BIN */ yytestcase(yyruleno==460); - case 466: /* tags_literal ::= NK_PLUS NK_HEX */ yytestcase(yyruleno==466); - case 469: /* tags_literal ::= NK_MINUS NK_HEX */ yytestcase(yyruleno==469); + case 446: /* tags_literal ::= NK_PLUS NK_INTEGER */ + case 449: /* tags_literal ::= NK_MINUS NK_INTEGER */ yytestcase(yyruleno==449); + case 458: /* tags_literal ::= NK_PLUS NK_BIN */ yytestcase(yyruleno==458); + case 461: /* tags_literal ::= NK_MINUS NK_BIN */ yytestcase(yyruleno==461); + case 467: /* tags_literal ::= NK_PLUS NK_HEX */ yytestcase(yyruleno==467); + case 470: /* tags_literal ::= NK_MINUS NK_HEX */ yytestcase(yyruleno==470); { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6591,18 +6924,18 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 446: /* tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ - case 447: /* tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==447); - case 449: /* tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ yytestcase(yyruleno==449); - case 450: /* tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==450); - case 458: /* tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==458); - case 459: /* tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==459); - case 461: /* tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==461); - case 462: /* tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==462); - case 467: /* tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==467); - case 468: /* tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==468); - case 470: /* tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==470); - case 471: /* tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==471); + case 447: /* tags_literal ::= NK_PLUS NK_INTEGER NK_PLUS duration_literal */ + case 448: /* tags_literal ::= NK_PLUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==448); + case 450: /* tags_literal ::= NK_MINUS NK_INTEGER NK_PLUS duration_literal */ yytestcase(yyruleno==450); + case 451: /* tags_literal ::= NK_MINUS NK_INTEGER NK_MINUS duration_literal */ yytestcase(yyruleno==451); + case 459: /* tags_literal ::= NK_PLUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==459); + case 460: /* tags_literal ::= NK_PLUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==460); + case 462: /* tags_literal ::= NK_MINUS NK_BIN NK_PLUS duration_literal */ yytestcase(yyruleno==462); + case 463: /* tags_literal ::= NK_MINUS NK_BIN NK_MINUS duration_literal */ yytestcase(yyruleno==463); + case 468: /* tags_literal ::= NK_PLUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==468); + case 469: /* tags_literal ::= NK_PLUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==469); + case 471: /* tags_literal ::= NK_MINUS NK_HEX NK_PLUS duration_literal */ yytestcase(yyruleno==471); + case 472: /* tags_literal ::= NK_MINUS NK_HEX NK_MINUS duration_literal */ yytestcase(yyruleno==472); { SToken l = yymsp[-3].minor.yy0; SToken r = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6611,12 +6944,12 @@ yymsp[0].minor.yy600); } } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 451: /* tags_literal ::= NK_FLOAT */ + case 452: /* tags_literal ::= NK_FLOAT */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 452: /* tags_literal ::= NK_PLUS NK_FLOAT */ - case 453: /* tags_literal ::= NK_MINUS NK_FLOAT */ yytestcase(yyruleno==453); + case 453: /* tags_literal ::= NK_PLUS NK_FLOAT */ + case 454: /* tags_literal ::= NK_MINUS NK_FLOAT */ yytestcase(yyruleno==454); { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6624,24 +6957,24 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 472: /* tags_literal ::= NK_STRING */ + case 473: /* tags_literal ::= NK_STRING */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 475: /* tags_literal ::= NK_BOOL */ + case 476: /* tags_literal ::= NK_BOOL */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 476: /* tags_literal ::= NULL */ + case 477: /* tags_literal ::= NULL */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0, NULL); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 477: /* tags_literal ::= literal_func */ + case 478: /* tags_literal ::= literal_func */ { yylhsminor.yy600 = createRawValueNode(pCxt, TSDB_DATA_TYPE_BINARY, NULL, yymsp[0].minor.yy600); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 478: /* tags_literal ::= literal_func NK_PLUS duration_literal */ - case 479: /* tags_literal ::= literal_func NK_MINUS duration_literal */ yytestcase(yyruleno==479); + case 479: /* tags_literal ::= literal_func NK_PLUS duration_literal */ + case 480: /* tags_literal ::= literal_func NK_MINUS duration_literal */ yytestcase(yyruleno==480); { SToken l = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken r = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6650,72 +6983,72 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 482: /* literal ::= NK_INTEGER */ + case 483: /* literal ::= NK_INTEGER */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 483: /* literal ::= NK_FLOAT */ + case 484: /* literal ::= NK_FLOAT */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 484: /* literal ::= NK_STRING */ + case 485: /* literal ::= NK_STRING */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 485: /* literal ::= NK_BOOL */ + case 486: /* literal ::= NK_BOOL */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 486: /* literal ::= TIMESTAMP NK_STRING */ + case 487: /* literal ::= TIMESTAMP NK_STRING */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 487: /* literal ::= duration_literal */ - case 497: /* signed_literal ::= signed */ yytestcase(yyruleno==497); - case 521: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==521); - case 522: /* expression ::= literal */ yytestcase(yyruleno==522); - case 524: /* expression ::= column_reference */ yytestcase(yyruleno==524); - case 525: /* expression ::= function_expression */ yytestcase(yyruleno==525); - case 526: /* expression ::= case_when_expression */ yytestcase(yyruleno==526); - case 560: /* function_expression ::= literal_func */ yytestcase(yyruleno==560); - case 610: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==610); - case 614: /* boolean_primary ::= predicate */ yytestcase(yyruleno==614); - case 616: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==616); - case 617: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==617); - case 620: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==620); - case 622: /* table_reference ::= table_primary */ yytestcase(yyruleno==622); - case 623: /* table_reference ::= joined_table */ yytestcase(yyruleno==623); - case 627: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==627); - case 712: /* query_simple ::= query_specification */ yytestcase(yyruleno==712); - case 713: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==713); - case 716: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==716); - case 718: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==718); + case 488: /* literal ::= duration_literal */ + case 498: /* signed_literal ::= signed */ yytestcase(yyruleno==498); + case 522: /* expr_or_subquery ::= expression */ yytestcase(yyruleno==522); + case 523: /* expression ::= literal */ yytestcase(yyruleno==523); + case 525: /* expression ::= column_reference */ yytestcase(yyruleno==525); + case 526: /* expression ::= function_expression */ yytestcase(yyruleno==526); + case 527: /* expression ::= case_when_expression */ yytestcase(yyruleno==527); + case 561: /* function_expression ::= literal_func */ yytestcase(yyruleno==561); + case 611: /* boolean_value_expression ::= boolean_primary */ yytestcase(yyruleno==611); + case 615: /* boolean_primary ::= predicate */ yytestcase(yyruleno==615); + case 617: /* common_expression ::= expr_or_subquery */ yytestcase(yyruleno==617); + case 618: /* common_expression ::= boolean_value_expression */ yytestcase(yyruleno==618); + case 621: /* table_reference_list ::= table_reference */ yytestcase(yyruleno==621); + case 623: /* table_reference ::= table_primary */ yytestcase(yyruleno==623); + case 624: /* table_reference ::= joined_table */ yytestcase(yyruleno==624); + case 628: /* table_primary ::= parenthesized_joined_table */ yytestcase(yyruleno==628); + case 713: /* query_simple ::= query_specification */ yytestcase(yyruleno==713); + case 714: /* query_simple ::= union_query_expression */ yytestcase(yyruleno==714); + case 717: /* query_simple_or_subquery ::= query_simple */ yytestcase(yyruleno==717); + case 719: /* query_or_subquery ::= query_expression */ yytestcase(yyruleno==719); { yylhsminor.yy600 = yymsp[0].minor.yy600; } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 488: /* literal ::= NULL */ + case 489: /* literal ::= NULL */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 489: /* literal ::= NK_QUESTION */ + case 490: /* literal ::= NK_QUESTION */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 490: /* duration_literal ::= NK_VARIABLE */ - case 687: /* interval_sliding_duration_literal ::= NK_VARIABLE */ yytestcase(yyruleno==687); - case 688: /* interval_sliding_duration_literal ::= NK_STRING */ yytestcase(yyruleno==688); - case 689: /* interval_sliding_duration_literal ::= NK_INTEGER */ yytestcase(yyruleno==689); + case 491: /* duration_literal ::= NK_VARIABLE */ + case 688: /* interval_sliding_duration_literal ::= NK_VARIABLE */ yytestcase(yyruleno==688); + case 689: /* interval_sliding_duration_literal ::= NK_STRING */ yytestcase(yyruleno==689); + case 690: /* interval_sliding_duration_literal ::= NK_INTEGER */ yytestcase(yyruleno==690); { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createDurationValueNode(pCxt, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 491: /* signed ::= NK_INTEGER */ + case 492: /* signed ::= NK_INTEGER */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 492: /* signed ::= NK_PLUS NK_INTEGER */ + case 493: /* signed ::= NK_PLUS NK_INTEGER */ { yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_UBIGINT, &yymsp[0].minor.yy0); } break; - case 493: /* signed ::= NK_MINUS NK_INTEGER */ + case 494: /* signed ::= NK_MINUS NK_INTEGER */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6723,14 +7056,14 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 494: /* signed ::= NK_FLOAT */ + case 495: /* signed ::= NK_FLOAT */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 495: /* signed ::= NK_PLUS NK_FLOAT */ + case 496: /* signed ::= NK_PLUS NK_FLOAT */ { yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_DOUBLE, &yymsp[0].minor.yy0); } break; - case 496: /* signed ::= NK_MINUS NK_FLOAT */ + case 497: /* signed ::= NK_MINUS NK_FLOAT */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -6738,61 +7071,61 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 498: /* signed_literal ::= NK_STRING */ + case 499: /* signed_literal ::= NK_STRING */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 499: /* signed_literal ::= NK_BOOL */ + case 500: /* signed_literal ::= NK_BOOL */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_BOOL, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 500: /* signed_literal ::= TIMESTAMP NK_STRING */ + case 501: /* signed_literal ::= TIMESTAMP NK_STRING */ { yymsp[-1].minor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_TIMESTAMP, &yymsp[0].minor.yy0); } break; - case 501: /* signed_literal ::= duration_literal */ - case 503: /* signed_literal ::= literal_func */ yytestcase(yyruleno==503); - case 581: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==581); - case 664: /* select_item ::= common_expression */ yytestcase(yyruleno==664); - case 674: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==674); - case 717: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==717); - case 719: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==719); - case 732: /* search_condition ::= common_expression */ yytestcase(yyruleno==732); + case 502: /* signed_literal ::= duration_literal */ + case 504: /* signed_literal ::= literal_func */ yytestcase(yyruleno==504); + case 582: /* star_func_para ::= expr_or_subquery */ yytestcase(yyruleno==582); + case 665: /* select_item ::= common_expression */ yytestcase(yyruleno==665); + case 675: /* partition_item ::= expr_or_subquery */ yytestcase(yyruleno==675); + case 718: /* query_simple_or_subquery ::= subquery */ yytestcase(yyruleno==718); + case 720: /* query_or_subquery ::= subquery */ yytestcase(yyruleno==720); + case 733: /* search_condition ::= common_expression */ yytestcase(yyruleno==733); { yylhsminor.yy600 = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 502: /* signed_literal ::= NULL */ + case 503: /* signed_literal ::= NULL */ { yylhsminor.yy600 = createValueNode(pCxt, TSDB_DATA_TYPE_NULL, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 504: /* signed_literal ::= NK_QUESTION */ + case 505: /* signed_literal ::= NK_QUESTION */ { yylhsminor.yy600 = createPlaceholderValueNode(pCxt, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 523: /* expression ::= pseudo_column */ + case 524: /* expression ::= pseudo_column */ { yylhsminor.yy600 = yymsp[0].minor.yy600; setRawExprNodeIsPseudoColumn(pCxt, yylhsminor.yy600, true); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 527: /* expression ::= NK_LP expression NK_RP */ - case 615: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==615); - case 731: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==731); + case 528: /* expression ::= NK_LP expression NK_RP */ + case 616: /* boolean_primary ::= NK_LP boolean_value_expression NK_RP */ yytestcase(yyruleno==616); + case 732: /* subquery ::= NK_LP subquery NK_RP */ yytestcase(yyruleno==732); { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 528: /* expression ::= NK_PLUS expr_or_subquery */ + case 529: /* expression ::= NK_PLUS expr_or_subquery */ { SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 529: /* expression ::= NK_MINUS expr_or_subquery */ + case 530: /* expression ::= NK_MINUS expr_or_subquery */ { SToken t = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &t, createOperatorNode(pCxt, OP_TYPE_MINUS, releaseRawExprNode(pCxt, yymsp[0].minor.yy600), NULL)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 530: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ + case 531: /* expression ::= expr_or_subquery NK_PLUS expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6800,7 +7133,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 531: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ + case 532: /* expression ::= expr_or_subquery NK_MINUS expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6808,7 +7141,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 532: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ + case 533: /* expression ::= expr_or_subquery NK_STAR expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6816,7 +7149,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 533: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ + case 534: /* expression ::= expr_or_subquery NK_SLASH expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6824,7 +7157,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 534: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ + case 535: /* expression ::= expr_or_subquery NK_REM expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6832,14 +7165,14 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 535: /* expression ::= column_reference NK_ARROW NK_STRING */ + case 536: /* expression ::= column_reference NK_ARROW NK_STRING */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_JSON_GET_VALUE, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[0].minor.yy0))); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 536: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ + case 537: /* expression ::= expr_or_subquery NK_BITAND expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6847,7 +7180,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 537: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ + case 538: /* expression ::= expr_or_subquery NK_BITOR expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6855,81 +7188,81 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 540: /* column_reference ::= column_name */ + case 541: /* column_reference ::= column_name */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy649, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy649)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 541: /* column_reference ::= table_name NK_DOT column_name */ + case 542: /* column_reference ::= table_name NK_DOT column_name */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy649, createColumnNode(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy649)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 542: /* column_reference ::= NK_ALIAS */ + case 543: /* column_reference ::= NK_ALIAS */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 543: /* column_reference ::= table_name NK_DOT NK_ALIAS */ + case 544: /* column_reference ::= table_name NK_DOT NK_ALIAS */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0, createColumnNode(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 544: /* pseudo_column ::= ROWTS */ - case 545: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==545); - case 547: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==547); - case 548: /* pseudo_column ::= QEND */ yytestcase(yyruleno==548); - case 549: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==549); - case 550: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==550); - case 551: /* pseudo_column ::= WEND */ yytestcase(yyruleno==551); - case 552: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==552); - case 553: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==553); - case 554: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==554); - case 555: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==555); - case 562: /* literal_func ::= NOW */ yytestcase(yyruleno==562); - case 563: /* literal_func ::= TODAY */ yytestcase(yyruleno==563); + case 545: /* pseudo_column ::= ROWTS */ + case 546: /* pseudo_column ::= TBNAME */ yytestcase(yyruleno==546); + case 548: /* pseudo_column ::= QSTART */ yytestcase(yyruleno==548); + case 549: /* pseudo_column ::= QEND */ yytestcase(yyruleno==549); + case 550: /* pseudo_column ::= QDURATION */ yytestcase(yyruleno==550); + case 551: /* pseudo_column ::= WSTART */ yytestcase(yyruleno==551); + case 552: /* pseudo_column ::= WEND */ yytestcase(yyruleno==552); + case 553: /* pseudo_column ::= WDURATION */ yytestcase(yyruleno==553); + case 554: /* pseudo_column ::= IROWTS */ yytestcase(yyruleno==554); + case 555: /* pseudo_column ::= ISFILLED */ yytestcase(yyruleno==555); + case 556: /* pseudo_column ::= QTAGS */ yytestcase(yyruleno==556); + case 563: /* literal_func ::= NOW */ yytestcase(yyruleno==563); + case 564: /* literal_func ::= TODAY */ yytestcase(yyruleno==564); { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, NULL)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 546: /* pseudo_column ::= table_name NK_DOT TBNAME */ + case 547: /* pseudo_column ::= table_name NK_DOT TBNAME */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[0].minor.yy0, createNodeList(pCxt, createValueNode(pCxt, TSDB_DATA_TYPE_BINARY, &yymsp[-2].minor.yy649)))); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 556: /* function_expression ::= function_name NK_LP expression_list NK_RP */ - case 557: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==557); + case 557: /* function_expression ::= function_name NK_LP expression_list NK_RP */ + case 558: /* function_expression ::= star_func NK_LP star_func_para_list NK_RP */ yytestcase(yyruleno==558); { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy649, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-3].minor.yy649, yymsp[-1].minor.yy748)); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 558: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ - case 559: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ yytestcase(yyruleno==559); + case 559: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name NK_RP */ + case 560: /* function_expression ::= CAST NK_LP expr_or_subquery AS type_name_default_len NK_RP */ yytestcase(yyruleno==560); { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-5].minor.yy0, &yymsp[0].minor.yy0, createCastFunctionNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-1].minor.yy400)); } yymsp[-5].minor.yy600 = yylhsminor.yy600; break; - case 561: /* literal_func ::= noarg_func NK_LP NK_RP */ + case 562: /* literal_func ::= noarg_func NK_LP NK_RP */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0, createFunctionNode(pCxt, &yymsp[-2].minor.yy649, NULL)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 577: /* star_func_para_list ::= NK_STAR */ + case 578: /* star_func_para_list ::= NK_STAR */ { yylhsminor.yy748 = createNodeList(pCxt, createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; - case 582: /* star_func_para ::= table_name NK_DOT NK_STAR */ - case 667: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==667); + case 583: /* star_func_para ::= table_name NK_DOT NK_STAR */ + case 668: /* select_item ::= table_name NK_DOT NK_STAR */ yytestcase(yyruleno==668); { yylhsminor.yy600 = createColumnNode(pCxt, &yymsp[-2].minor.yy649, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 583: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ + case 584: /* case_when_expression ::= CASE when_then_list case_when_else_opt END */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-3].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, NULL, yymsp[-2].minor.yy748, yymsp[-1].minor.yy600)); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 584: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ + case 585: /* case_when_expression ::= CASE common_expression when_then_list case_when_else_opt END */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-4].minor.yy0, &yymsp[0].minor.yy0, createCaseWhenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-2].minor.yy748, yymsp[-1].minor.yy600)); } yymsp[-4].minor.yy600 = yylhsminor.yy600; break; - case 587: /* when_then_expr ::= WHEN common_expression THEN common_expression */ + case 588: /* when_then_expr ::= WHEN common_expression THEN common_expression */ { yymsp[-3].minor.yy600 = createWhenThenNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), releaseRawExprNode(pCxt, yymsp[0].minor.yy600)); } break; - case 589: /* case_when_else_opt ::= ELSE common_expression */ + case 590: /* case_when_else_opt ::= ELSE common_expression */ { yymsp[-1].minor.yy600 = releaseRawExprNode(pCxt, yymsp[0].minor.yy600); } break; - case 590: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ - case 595: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==595); + case 591: /* predicate ::= expr_or_subquery compare_op expr_or_subquery */ + case 596: /* predicate ::= expr_or_subquery in_op in_predicate_value */ yytestcase(yyruleno==596); { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6937,7 +7270,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 591: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ + case 592: /* predicate ::= expr_or_subquery BETWEEN expr_or_subquery AND expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-4].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6945,7 +7278,7 @@ yymsp[0].minor.yy600); } } yymsp[-4].minor.yy600 = yylhsminor.yy600; break; - case 592: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ + case 593: /* predicate ::= expr_or_subquery NOT BETWEEN expr_or_subquery AND expr_or_subquery */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-5].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -6953,71 +7286,71 @@ yymsp[0].minor.yy600); } } yymsp[-5].minor.yy600 = yylhsminor.yy600; break; - case 593: /* predicate ::= expr_or_subquery IS NULL */ + case 594: /* predicate ::= expr_or_subquery IS NULL */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NULL, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), NULL)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 594: /* predicate ::= expr_or_subquery IS NOT NULL */ + case 595: /* predicate ::= expr_or_subquery IS NOT NULL */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-3].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &s, &yymsp[0].minor.yy0, createOperatorNode(pCxt, OP_TYPE_IS_NOT_NULL, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), NULL)); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 596: /* compare_op ::= NK_LT */ + case 597: /* compare_op ::= NK_LT */ { yymsp[0].minor.yy292 = OP_TYPE_LOWER_THAN; } break; - case 597: /* compare_op ::= NK_GT */ + case 598: /* compare_op ::= NK_GT */ { yymsp[0].minor.yy292 = OP_TYPE_GREATER_THAN; } break; - case 598: /* compare_op ::= NK_LE */ + case 599: /* compare_op ::= NK_LE */ { yymsp[0].minor.yy292 = OP_TYPE_LOWER_EQUAL; } break; - case 599: /* compare_op ::= NK_GE */ + case 600: /* compare_op ::= NK_GE */ { yymsp[0].minor.yy292 = OP_TYPE_GREATER_EQUAL; } break; - case 600: /* compare_op ::= NK_NE */ + case 601: /* compare_op ::= NK_NE */ { yymsp[0].minor.yy292 = OP_TYPE_NOT_EQUAL; } break; - case 601: /* compare_op ::= NK_EQ */ + case 602: /* compare_op ::= NK_EQ */ { yymsp[0].minor.yy292 = OP_TYPE_EQUAL; } break; - case 602: /* compare_op ::= LIKE */ + case 603: /* compare_op ::= LIKE */ { yymsp[0].minor.yy292 = OP_TYPE_LIKE; } break; - case 603: /* compare_op ::= NOT LIKE */ + case 604: /* compare_op ::= NOT LIKE */ { yymsp[-1].minor.yy292 = OP_TYPE_NOT_LIKE; } break; - case 604: /* compare_op ::= MATCH */ + case 605: /* compare_op ::= MATCH */ { yymsp[0].minor.yy292 = OP_TYPE_MATCH; } break; - case 605: /* compare_op ::= NMATCH */ + case 606: /* compare_op ::= NMATCH */ { yymsp[0].minor.yy292 = OP_TYPE_NMATCH; } break; - case 606: /* compare_op ::= CONTAINS */ + case 607: /* compare_op ::= CONTAINS */ { yymsp[0].minor.yy292 = OP_TYPE_JSON_CONTAINS; } break; - case 607: /* in_op ::= IN */ + case 608: /* in_op ::= IN */ { yymsp[0].minor.yy292 = OP_TYPE_IN; } break; - case 608: /* in_op ::= NOT IN */ + case 609: /* in_op ::= NOT IN */ { yymsp[-1].minor.yy292 = OP_TYPE_NOT_IN; } break; - case 609: /* in_predicate_value ::= NK_LP literal_list NK_RP */ + case 610: /* in_predicate_value ::= NK_LP literal_list NK_RP */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, createNodeListNode(pCxt, yymsp[-1].minor.yy748)); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 611: /* boolean_value_expression ::= NOT boolean_primary */ + case 612: /* boolean_value_expression ::= NOT boolean_primary */ { SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-1].minor.yy0, &e, createLogicConditionNode(pCxt, LOGIC_COND_TYPE_NOT, releaseRawExprNode(pCxt, yymsp[0].minor.yy600), NULL)); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 612: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ + case 613: /* boolean_value_expression ::= boolean_value_expression OR boolean_value_expression */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -7025,7 +7358,7 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 613: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ + case 614: /* boolean_value_expression ::= boolean_value_expression AND boolean_value_expression */ { SToken s = getTokenFromRawExprNode(pCxt, yymsp[-2].minor.yy600); SToken e = getTokenFromRawExprNode(pCxt, yymsp[0].minor.yy600); @@ -7033,33 +7366,33 @@ yymsp[0].minor.yy600); } } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 621: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ + case 622: /* table_reference_list ::= table_reference_list NK_COMMA table_reference */ { yylhsminor.yy600 = createJoinTableNode(pCxt, JOIN_TYPE_INNER, JOIN_STYPE_NONE, yymsp[-2].minor.yy600, yymsp[0].minor.yy600, NULL); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 624: /* table_primary ::= table_name alias_opt */ + case 625: /* table_primary ::= table_name alias_opt */ { yylhsminor.yy600 = createRealTableNode(pCxt, NULL, &yymsp[-1].minor.yy649, &yymsp[0].minor.yy649); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 625: /* table_primary ::= db_name NK_DOT table_name alias_opt */ + case 626: /* table_primary ::= db_name NK_DOT table_name alias_opt */ { yylhsminor.yy600 = createRealTableNode(pCxt, &yymsp[-3].minor.yy649, &yymsp[-1].minor.yy649, &yymsp[0].minor.yy649); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 626: /* table_primary ::= subquery alias_opt */ + case 627: /* table_primary ::= subquery alias_opt */ { yylhsminor.yy600 = createTempTableNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600), &yymsp[0].minor.yy649); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 628: /* alias_opt ::= */ + case 629: /* alias_opt ::= */ { yymsp[1].minor.yy649 = nil_token; } break; - case 630: /* alias_opt ::= AS table_alias */ + case 631: /* alias_opt ::= AS table_alias */ { yymsp[-1].minor.yy649 = yymsp[0].minor.yy649; } break; - case 631: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ - case 632: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==632); + case 632: /* parenthesized_joined_table ::= NK_LP joined_table NK_RP */ + case 633: /* parenthesized_joined_table ::= NK_LP parenthesized_joined_table NK_RP */ yytestcase(yyruleno==633); { yymsp[-2].minor.yy600 = yymsp[-1].minor.yy600; } break; - case 633: /* joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ + case 634: /* joined_table ::= table_reference join_type join_subtype JOIN table_reference join_on_clause_opt window_offset_clause_opt jlimit_clause_opt */ { yylhsminor.yy600 = createJoinTableNode(pCxt, yymsp[-6].minor.yy564, yymsp[-5].minor.yy758, yymsp[-7].minor.yy600, yymsp[-3].minor.yy600, yymsp[-2].minor.yy600); yylhsminor.yy600 = addWindowOffsetClause(pCxt, yylhsminor.yy600, yymsp[-1].minor.yy600); @@ -7067,47 +7400,47 @@ yymsp[0].minor.yy600); } } yymsp[-7].minor.yy600 = yylhsminor.yy600; break; - case 634: /* join_type ::= */ + case 635: /* join_type ::= */ { yymsp[1].minor.yy564 = JOIN_TYPE_INNER; } break; - case 635: /* join_type ::= INNER */ + case 636: /* join_type ::= INNER */ { yymsp[0].minor.yy564 = JOIN_TYPE_INNER; } break; - case 636: /* join_type ::= LEFT */ + case 637: /* join_type ::= LEFT */ { yymsp[0].minor.yy564 = JOIN_TYPE_LEFT; } break; - case 637: /* join_type ::= RIGHT */ + case 638: /* join_type ::= RIGHT */ { yymsp[0].minor.yy564 = JOIN_TYPE_RIGHT; } break; - case 638: /* join_type ::= FULL */ + case 639: /* join_type ::= FULL */ { yymsp[0].minor.yy564 = JOIN_TYPE_FULL; } break; - case 639: /* join_subtype ::= */ + case 640: /* join_subtype ::= */ { yymsp[1].minor.yy758 = JOIN_STYPE_NONE; } break; - case 640: /* join_subtype ::= OUTER */ + case 641: /* join_subtype ::= OUTER */ { yymsp[0].minor.yy758 = JOIN_STYPE_OUTER; } break; - case 641: /* join_subtype ::= SEMI */ + case 642: /* join_subtype ::= SEMI */ { yymsp[0].minor.yy758 = JOIN_STYPE_SEMI; } break; - case 642: /* join_subtype ::= ANTI */ + case 643: /* join_subtype ::= ANTI */ { yymsp[0].minor.yy758 = JOIN_STYPE_ANTI; } break; - case 643: /* join_subtype ::= ASOF */ + case 644: /* join_subtype ::= ASOF */ { yymsp[0].minor.yy758 = JOIN_STYPE_ASOF; } break; - case 644: /* join_subtype ::= WINDOW */ + case 645: /* join_subtype ::= WINDOW */ { yymsp[0].minor.yy758 = JOIN_STYPE_WIN; } break; - case 648: /* window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ + case 649: /* window_offset_clause_opt ::= WINDOW_OFFSET NK_LP window_offset_literal NK_COMMA window_offset_literal NK_RP */ { yymsp[-5].minor.yy600 = createWindowOffsetNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 649: /* window_offset_literal ::= NK_VARIABLE */ + case 650: /* window_offset_literal ::= NK_VARIABLE */ { yylhsminor.yy600 = createRawExprNode(pCxt, &yymsp[0].minor.yy0, createTimeOffsetValueNode(pCxt, &yymsp[0].minor.yy0)); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 650: /* window_offset_literal ::= NK_MINUS NK_VARIABLE */ + case 651: /* window_offset_literal ::= NK_MINUS NK_VARIABLE */ { SToken t = yymsp[-1].minor.yy0; t.n = (yymsp[0].minor.yy0.z + yymsp[0].minor.yy0.n) - yymsp[-1].minor.yy0.z; @@ -7115,12 +7448,12 @@ yymsp[0].minor.yy600); } } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 652: /* jlimit_clause_opt ::= JLIMIT NK_INTEGER */ - case 723: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ yytestcase(yyruleno==723); - case 727: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==727); + case 653: /* jlimit_clause_opt ::= JLIMIT NK_INTEGER */ + case 724: /* slimit_clause_opt ::= SLIMIT NK_INTEGER */ yytestcase(yyruleno==724); + case 728: /* limit_clause_opt ::= LIMIT NK_INTEGER */ yytestcase(yyruleno==728); { yymsp[-1].minor.yy600 = createLimitNode(pCxt, &yymsp[0].minor.yy0, NULL); } break; - case 653: /* query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ + case 654: /* query_specification ::= SELECT hint_list set_quantifier_opt tag_mode_opt select_list from_clause_opt where_clause_opt partition_by_clause_opt range_opt every_opt fill_opt twindow_clause_opt group_by_clause_opt having_clause_opt */ { yymsp[-13].minor.yy600 = createSelectStmt(pCxt, yymsp[-11].minor.yy705, yymsp[-9].minor.yy748, yymsp[-8].minor.yy600, yymsp[-12].minor.yy748); yymsp[-13].minor.yy600 = setSelectStmtTagMode(pCxt, yymsp[-13].minor.yy600, yymsp[-10].minor.yy705); @@ -7134,98 +7467,98 @@ yymsp[0].minor.yy600); } yymsp[-13].minor.yy600 = addFillClause(pCxt, yymsp[-13].minor.yy600, yymsp[-3].minor.yy600); } break; - case 654: /* hint_list ::= */ + case 655: /* hint_list ::= */ { yymsp[1].minor.yy748 = createHintNodeList(pCxt, NULL); } break; - case 655: /* hint_list ::= NK_HINT */ + case 656: /* hint_list ::= NK_HINT */ { yylhsminor.yy748 = createHintNodeList(pCxt, &yymsp[0].minor.yy0); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; - case 660: /* set_quantifier_opt ::= ALL */ + case 661: /* set_quantifier_opt ::= ALL */ { yymsp[0].minor.yy705 = false; } break; - case 663: /* select_item ::= NK_STAR */ + case 664: /* select_item ::= NK_STAR */ { yylhsminor.yy600 = createColumnNode(pCxt, NULL, &yymsp[0].minor.yy0); } yymsp[0].minor.yy600 = yylhsminor.yy600; break; - case 665: /* select_item ::= common_expression column_alias */ - case 675: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==675); + case 666: /* select_item ::= common_expression column_alias */ + case 676: /* partition_item ::= expr_or_subquery column_alias */ yytestcase(yyruleno==676); { yylhsminor.yy600 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600), &yymsp[0].minor.yy649); } yymsp[-1].minor.yy600 = yylhsminor.yy600; break; - case 666: /* select_item ::= common_expression AS column_alias */ - case 676: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==676); + case 667: /* select_item ::= common_expression AS column_alias */ + case 677: /* partition_item ::= expr_or_subquery AS column_alias */ yytestcase(yyruleno==677); { yylhsminor.yy600 = setProjectionAlias(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), &yymsp[0].minor.yy649); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 671: /* partition_by_clause_opt ::= PARTITION BY partition_list */ - case 701: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==701); - case 721: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==721); + case 672: /* partition_by_clause_opt ::= PARTITION BY partition_list */ + case 702: /* group_by_clause_opt ::= GROUP BY group_by_list */ yytestcase(yyruleno==702); + case 722: /* order_by_clause_opt ::= ORDER BY sort_specification_list */ yytestcase(yyruleno==722); { yymsp[-2].minor.yy748 = yymsp[0].minor.yy748; } break; - case 678: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ + case 679: /* twindow_clause_opt ::= SESSION NK_LP column_reference NK_COMMA interval_sliding_duration_literal NK_RP */ { yymsp[-5].minor.yy600 = createSessionWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 679: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ + case 680: /* twindow_clause_opt ::= STATE_WINDOW NK_LP expr_or_subquery NK_RP */ { yymsp[-3].minor.yy600 = createStateWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 680: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + case 681: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ { yymsp[-5].minor.yy600 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), NULL, yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } break; - case 681: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ + case 682: /* twindow_clause_opt ::= INTERVAL NK_LP interval_sliding_duration_literal NK_COMMA interval_sliding_duration_literal NK_RP sliding_opt fill_opt */ { yymsp[-7].minor.yy600 = createIntervalWindowNode(pCxt, releaseRawExprNode(pCxt, yymsp[-5].minor.yy600), releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), yymsp[-1].minor.yy600, yymsp[0].minor.yy600); } break; - case 682: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ + case 683: /* twindow_clause_opt ::= EVENT_WINDOW START WITH search_condition END WITH search_condition */ { yymsp[-6].minor.yy600 = createEventWindowNode(pCxt, yymsp[-3].minor.yy600, yymsp[0].minor.yy600); } break; - case 683: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ + case 684: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_RP */ { yymsp[-3].minor.yy600 = createCountWindowNode(pCxt, &yymsp[-1].minor.yy0, &yymsp[-1].minor.yy0); } break; - case 684: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ + case 685: /* twindow_clause_opt ::= COUNT_WINDOW NK_LP NK_INTEGER NK_COMMA NK_INTEGER NK_RP */ { yymsp[-5].minor.yy600 = createCountWindowNode(pCxt, &yymsp[-3].minor.yy0, &yymsp[-1].minor.yy0); } break; - case 691: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ + case 692: /* fill_opt ::= FILL NK_LP fill_mode NK_RP */ { yymsp[-3].minor.yy600 = createFillNode(pCxt, yymsp[-1].minor.yy6, NULL); } break; - case 692: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ + case 693: /* fill_opt ::= FILL NK_LP VALUE NK_COMMA expression_list NK_RP */ { yymsp[-5].minor.yy600 = createFillNode(pCxt, FILL_MODE_VALUE, createNodeListNode(pCxt, yymsp[-1].minor.yy748)); } break; - case 693: /* fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ + case 694: /* fill_opt ::= FILL NK_LP VALUE_F NK_COMMA expression_list NK_RP */ { yymsp[-5].minor.yy600 = createFillNode(pCxt, FILL_MODE_VALUE_F, createNodeListNode(pCxt, yymsp[-1].minor.yy748)); } break; - case 694: /* fill_mode ::= NONE */ + case 695: /* fill_mode ::= NONE */ { yymsp[0].minor.yy6 = FILL_MODE_NONE; } break; - case 695: /* fill_mode ::= PREV */ + case 696: /* fill_mode ::= PREV */ { yymsp[0].minor.yy6 = FILL_MODE_PREV; } break; - case 696: /* fill_mode ::= NULL */ + case 697: /* fill_mode ::= NULL */ { yymsp[0].minor.yy6 = FILL_MODE_NULL; } break; - case 697: /* fill_mode ::= NULL_F */ + case 698: /* fill_mode ::= NULL_F */ { yymsp[0].minor.yy6 = FILL_MODE_NULL_F; } break; - case 698: /* fill_mode ::= LINEAR */ + case 699: /* fill_mode ::= LINEAR */ { yymsp[0].minor.yy6 = FILL_MODE_LINEAR; } break; - case 699: /* fill_mode ::= NEXT */ + case 700: /* fill_mode ::= NEXT */ { yymsp[0].minor.yy6 = FILL_MODE_NEXT; } break; - case 702: /* group_by_list ::= expr_or_subquery */ + case 703: /* group_by_list ::= expr_or_subquery */ { yylhsminor.yy748 = createNodeList(pCxt, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); } yymsp[0].minor.yy748 = yylhsminor.yy748; break; - case 703: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ + case 704: /* group_by_list ::= group_by_list NK_COMMA expr_or_subquery */ { yylhsminor.yy748 = addNodeToList(pCxt, yymsp[-2].minor.yy748, createGroupingSetNode(pCxt, releaseRawExprNode(pCxt, yymsp[0].minor.yy600))); } yymsp[-2].minor.yy748 = yylhsminor.yy748; break; - case 707: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ + case 708: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_COMMA expr_or_subquery NK_RP */ { yymsp[-5].minor.yy600 = createInterpTimeRange(pCxt, releaseRawExprNode(pCxt, yymsp[-3].minor.yy600), releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 708: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ + case 709: /* range_opt ::= RANGE NK_LP expr_or_subquery NK_RP */ { yymsp[-3].minor.yy600 = createInterpTimePoint(pCxt, releaseRawExprNode(pCxt, yymsp[-1].minor.yy600)); } break; - case 711: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ + case 712: /* query_expression ::= query_simple order_by_clause_opt slimit_clause_opt limit_clause_opt */ { yylhsminor.yy600 = addOrderByClause(pCxt, yymsp[-3].minor.yy600, yymsp[-2].minor.yy748); yylhsminor.yy600 = addSlimitClause(pCxt, yylhsminor.yy600, yymsp[-1].minor.yy600); @@ -7233,57 +7566,57 @@ yymsp[0].minor.yy600); } } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 714: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ + case 715: /* union_query_expression ::= query_simple_or_subquery UNION ALL query_simple_or_subquery */ { yylhsminor.yy600 = createSetOperator(pCxt, SET_OP_TYPE_UNION_ALL, yymsp[-3].minor.yy600, yymsp[0].minor.yy600); } yymsp[-3].minor.yy600 = yylhsminor.yy600; break; - case 715: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ + case 716: /* union_query_expression ::= query_simple_or_subquery UNION query_simple_or_subquery */ { yylhsminor.yy600 = createSetOperator(pCxt, SET_OP_TYPE_UNION, yymsp[-2].minor.yy600, yymsp[0].minor.yy600); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 724: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ - case 728: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==728); + case 725: /* slimit_clause_opt ::= SLIMIT NK_INTEGER SOFFSET NK_INTEGER */ + case 729: /* limit_clause_opt ::= LIMIT NK_INTEGER OFFSET NK_INTEGER */ yytestcase(yyruleno==729); { yymsp[-3].minor.yy600 = createLimitNode(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); } break; - case 725: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ - case 729: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==729); + case 726: /* slimit_clause_opt ::= SLIMIT NK_INTEGER NK_COMMA NK_INTEGER */ + case 730: /* limit_clause_opt ::= LIMIT NK_INTEGER NK_COMMA NK_INTEGER */ yytestcase(yyruleno==730); { yymsp[-3].minor.yy600 = createLimitNode(pCxt, &yymsp[0].minor.yy0, &yymsp[-2].minor.yy0); } break; - case 730: /* subquery ::= NK_LP query_expression NK_RP */ + case 731: /* subquery ::= NK_LP query_expression NK_RP */ { yylhsminor.yy600 = createRawExprNodeExt(pCxt, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-1].minor.yy600); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 735: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ + case 736: /* sort_specification ::= expr_or_subquery ordering_specification_opt null_ordering_opt */ { yylhsminor.yy600 = createOrderByExprNode(pCxt, releaseRawExprNode(pCxt, yymsp[-2].minor.yy600), yymsp[-1].minor.yy1010, yymsp[0].minor.yy273); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 736: /* ordering_specification_opt ::= */ + case 737: /* ordering_specification_opt ::= */ { yymsp[1].minor.yy1010 = ORDER_ASC; } break; - case 737: /* ordering_specification_opt ::= ASC */ + case 738: /* ordering_specification_opt ::= ASC */ { yymsp[0].minor.yy1010 = ORDER_ASC; } break; - case 738: /* ordering_specification_opt ::= DESC */ + case 739: /* ordering_specification_opt ::= DESC */ { yymsp[0].minor.yy1010 = ORDER_DESC; } break; - case 739: /* null_ordering_opt ::= */ + case 740: /* null_ordering_opt ::= */ { yymsp[1].minor.yy273 = NULL_ORDER_DEFAULT; } break; - case 740: /* null_ordering_opt ::= NULLS FIRST */ + case 741: /* null_ordering_opt ::= NULLS FIRST */ { yymsp[-1].minor.yy273 = NULL_ORDER_FIRST; } break; - case 741: /* null_ordering_opt ::= NULLS LAST */ + case 742: /* null_ordering_opt ::= NULLS LAST */ { yymsp[-1].minor.yy273 = NULL_ORDER_LAST; } break; - case 744: /* column_options ::= column_options ENCODE NK_STRING */ + case 745: /* column_options ::= column_options ENCODE NK_STRING */ { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_ENCODE, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 745: /* column_options ::= column_options COMPRESS NK_STRING */ + case 746: /* column_options ::= column_options COMPRESS NK_STRING */ { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_COMPRESS, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; - case 746: /* column_options ::= column_options LEVEL NK_STRING */ + case 747: /* column_options ::= column_options LEVEL NK_STRING */ { yylhsminor.yy600 = setColumnOptions(pCxt, yymsp[-2].minor.yy600, COLUMN_OPTION_LEVEL, &yymsp[0].minor.yy0); } yymsp[-2].minor.yy600 = yylhsminor.yy600; break; @@ -7442,12 +7775,56 @@ void Parse( } #endif - do{ + while(1){ /* Exit by "break" */ + assert( yypParser->yytos>=yypParser->yystack ); assert( yyact==yypParser->yytos->stateno ); yyact = yy_find_shift_action((YYCODETYPE)yymajor,yyact); if( yyact >= YY_MIN_REDUCE ){ - yyact = yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor, - yyminor ParseCTX_PARAM); + unsigned int yyruleno = yyact - YY_MIN_REDUCE; /* Reduce by this rule */ +#ifndef NDEBUG + assert( yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ); + if( yyTraceFILE ){ + int yysize = yyRuleInfoNRhs[yyruleno]; + if( yysize ){ + fprintf(yyTraceFILE, "%sReduce %d [%s]%s, pop back to state %d.\n", + yyTracePrompt, + yyruleno, yyRuleName[yyruleno], + yyrulenoyytos[yysize].stateno); + }else{ + fprintf(yyTraceFILE, "%sReduce %d [%s]%s.\n", + yyTracePrompt, yyruleno, yyRuleName[yyruleno], + yyrulenoyytos - yypParser->yystack)>yypParser->yyhwm ){ + yypParser->yyhwm++; + assert( yypParser->yyhwm == + (int)(yypParser->yytos - yypParser->yystack)); + } +#endif +#if YYSTACKDEPTH>0 + if( yypParser->yytos>=yypParser->yystackEnd ){ + yyStackOverflow(yypParser); + break; + } +#else + if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ + if( yyGrowStack(yypParser) ){ + yyStackOverflow(yypParser); + break; + } + } +#endif + } + yyact = yy_reduce(yypParser,yyruleno,yymajor,yyminor ParseCTX_PARAM); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,(YYCODETYPE)yymajor,yyminor); #ifndef YYNOERRORRECOVERY @@ -7503,14 +7880,13 @@ void Parse( yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ - while( yypParser->yytos >= yypParser->yystack - && (yyact = yy_find_reduce_action( - yypParser->yytos->stateno, - YYERRORSYMBOL)) > YY_MAX_SHIFTREDUCE - ){ + while( yypParser->yytos > yypParser->yystack ){ + yyact = yy_find_reduce_action(yypParser->yytos->stateno, + YYERRORSYMBOL); + if( yyact<=YY_MAX_SHIFTREDUCE ) break; yy_pop_parser_stack(yypParser); } - if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ + if( yypParser->yytos <= yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY @@ -7560,7 +7936,7 @@ void Parse( break; #endif } - }while( yypParser->yytos>yypParser->yystack ); + } #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; diff --git a/source/libs/planner/src/planOptimizer.c b/source/libs/planner/src/planOptimizer.c index 1ec3e6192d..a2a0343316 100644 --- a/source/libs/planner/src/planOptimizer.c +++ b/source/libs/planner/src/planOptimizer.c @@ -246,11 +246,10 @@ static bool scanPathOptMayBeOptimized(SLogicNode* pNode) { static bool scanPathOptShouldGetFuncs(SLogicNode* pNode) { if (QUERY_NODE_LOGIC_PLAN_PARTITION == nodeType(pNode)) { - if (pNode->pParent && QUERY_NODE_LOGIC_PLAN_WINDOW == nodeType(pNode->pParent)) { - if (WINDOW_TYPE_INTERVAL == ((SWindowLogicNode*)pNode->pParent)->winType) return true; - } else { + if (!pNode->pParent || QUERY_NODE_LOGIC_PLAN_WINDOW != nodeType(pNode->pParent) || + WINDOW_TYPE_INTERVAL == ((SWindowLogicNode*)pNode->pParent)->winType) return !scanPathOptHaveNormalCol(((SPartitionLogicNode*)pNode)->pPartitionKeys); - } + return false; } if ((QUERY_NODE_LOGIC_PLAN_WINDOW == nodeType(pNode) && diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index 34312dab54..db13da5f3b 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -1588,7 +1588,7 @@ int32_t valueEncode(void* value, int32_t vlen, int64_t ttl, char** dest) { if (*dest == NULL) { size_t size = sizeof(key.unixTimestamp) + sizeof(key.len) + sizeof(key.rawLen) + sizeof(key.compress) + key.len; char* p = taosMemoryCalloc(1, size); - char* buf = p; + char* buf = p; len += taosEncodeFixedI64((void**)&buf, key.unixTimestamp); len += taosEncodeFixedI32((void**)&buf, key.len); len += taosEncodeFixedI32((void**)&buf, key.rawLen); @@ -2740,8 +2740,10 @@ int32_t streamStateGetGroupKVByCur_rocksdb(SStreamStateCur* pCur, SWinKey* pKey, if (pKey->groupId == groupId) { return 0; } - taosMemoryFree((void*)*pVal); - *pVal = NULL; + if (pVal != NULL) { + taosMemoryFree((void*)*pVal); + *pVal = NULL; + } } return -1; } diff --git a/source/libs/stream/src/streamMeta.c b/source/libs/stream/src/streamMeta.c index 4fa9b2c66f..0aace1cb5b 100644 --- a/source/libs/stream/src/streamMeta.c +++ b/source/libs/stream/src/streamMeta.c @@ -1631,6 +1631,8 @@ int32_t streamMetaAddFailedTask(SStreamMeta* pMeta, int64_t streamId, int32_t ta streamMetaAddTaskLaunchResult(pMeta, hId.streamId, hId.taskId, startTs, now, false); } } else { + streamMetaRUnLock(pMeta); + stError("failed to locate the stream task:0x%" PRIx64 "-0x%x (vgId:%d), it may have been destroyed or stopped", streamId, taskId, pMeta->vgId); code = TSDB_CODE_STREAM_TASK_NOT_EXIST; diff --git a/source/libs/stream/src/tstreamFileState.c b/source/libs/stream/src/tstreamFileState.c index 82c36e6609..83de642e51 100644 --- a/source/libs/stream/src/tstreamFileState.c +++ b/source/libs/stream/src/tstreamFileState.c @@ -557,7 +557,6 @@ int32_t flushSnapshot(SStreamFileState* pFileState, SStreamSnapshot* pSnapshot, const int32_t BATCH_LIMIT = 256; int64_t st = taosGetTimestampMs(); - int32_t numOfElems = listNEles(pSnapshot); SListNode* pNode = NULL; int idx = streamStateGetCfIdx(pFileState->pFileStore, pFileState->cfName); @@ -589,8 +588,11 @@ int32_t flushSnapshot(SStreamFileState* pFileState, SStreamSnapshot* pSnapshot, } taosMemoryFree(buf); - if (streamStateGetBatchSize(batch) > 0) { + int32_t numOfElems = streamStateGetBatchSize(batch); + if (numOfElems > 0) { streamStatePutBatch_rocksdb(pFileState->pFileStore, batch); + } else { + goto _end; } streamStateClearBatch(batch); @@ -609,6 +611,7 @@ int32_t flushSnapshot(SStreamFileState* pFileState, SStreamSnapshot* pSnapshot, streamStatePutBatch_rocksdb(pFileState->pFileStore, batch); } +_end: streamStateDestroyBatch(batch); return code; } diff --git a/source/libs/transport/inc/transComm.h b/source/libs/transport/inc/transComm.h index 00944115c0..e62ca7d69a 100644 --- a/source/libs/transport/inc/transComm.h +++ b/source/libs/transport/inc/transComm.h @@ -123,7 +123,7 @@ typedef struct { STransMsg* pRsp; SEpSet epSet; int8_t hasEpSet; - tsem_t* pSem; + tsem2_t* pSem; int8_t inited; SRWLatch latch; } STransSyncMsg; diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index a1b09b9ee8..d0fb5cbfdb 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -2455,7 +2455,7 @@ int cliAppCb(SCliConn* pConn, STransMsg* pResp, SCliMsg* pMsg) { pSyncMsg->hasEpSet = 1; epsetAssign(&pSyncMsg->epSet, &pCtx->epSet); } - tsem_post(pSyncMsg->pSem); + tsem2_post(pSyncMsg->pSem); taosReleaseRef(transGetSyncMsgMgt(), pCtx->syncMsgRef); } else { rpcFreeCont(pResp->pCont); @@ -2684,8 +2684,8 @@ _RETURN: return ret; } int64_t transCreateSyncMsg(STransMsg* pTransMsg) { - tsem_t* sem = taosMemoryCalloc(1, sizeof(tsem_t)); - tsem_init(sem, 0, 0); + tsem2_t* sem = taosMemoryCalloc(1, sizeof(tsem2_t)); + tsem2_init(sem, 0, 0); STransSyncMsg* pSyncMsg = taosMemoryCalloc(1, sizeof(STransSyncMsg)); @@ -2745,7 +2745,7 @@ int transSendRecvWithTimeout(void* shandle, SEpSet* pEpSet, STransMsg* pReq, STr goto _RETURN; } - ret = tsem_timewait(pSyncMsg->pSem, timeoutMs); + ret = tsem2_timewait(pSyncMsg->pSem, timeoutMs); if (ret < 0) { pRsp->code = TSDB_CODE_TIMEOUT_ERROR; ret = TSDB_CODE_TIMEOUT_ERROR; diff --git a/source/libs/transport/src/transComm.c b/source/libs/transport/src/transComm.c index 5598aa39e3..e894d73c59 100644 --- a/source/libs/transport/src/transComm.c +++ b/source/libs/transport/src/transComm.c @@ -683,7 +683,7 @@ void transDestroySyncMsg(void* msg) { if (msg == NULL) return; STransSyncMsg* pSyncMsg = msg; - tsem_destroy(pSyncMsg->pSem); + tsem2_destroy(pSyncMsg->pSem); taosMemoryFree(pSyncMsg->pSem); transFreeMsg(pSyncMsg->pRsp->pCont); taosMemoryFree(pSyncMsg->pRsp); diff --git a/source/libs/transport/src/transSvr.c b/source/libs/transport/src/transSvr.c index c0b2eba90a..89c5c71eb0 100644 --- a/source/libs/transport/src/transSvr.c +++ b/source/libs/transport/src/transSvr.c @@ -680,12 +680,13 @@ static FORCE_INLINE void destroySmsg(SSvrMsg* smsg) { taosMemoryFree(smsg); } static FORCE_INLINE void destroySmsgWrapper(void* smsg, void* param) { destroySmsg((SSvrMsg*)smsg); } -static void destroyAllConn(SWorkThrd* pThrd) { - tTrace("thread %p destroy all conn ", pThrd); - while (!QUEUE_IS_EMPTY(&pThrd->conn)) { - queue* h = QUEUE_HEAD(&pThrd->conn); - QUEUE_REMOVE(h); - QUEUE_INIT(h); + +static void destroyAllConn(SWorkThrd* pThrd) { + tTrace("thread %p destroy all conn ", pThrd); + while (!QUEUE_IS_EMPTY(&pThrd->conn)) { + queue* h = QUEUE_HEAD(&pThrd->conn); + QUEUE_REMOVE(h); + QUEUE_INIT(h); SSvrConn* c = QUEUE_DATA(h, SSvrConn, queue); while (T_REF_VAL_GET(c) >= 2) { diff --git a/source/os/src/osSemaphore.c b/source/os/src/osSemaphore.c index 7d1cc746ff..dd962a157f 100644 --- a/source/os/src/osSemaphore.c +++ b/source/os/src/osSemaphore.c @@ -215,14 +215,6 @@ int32_t taosGetAppName(char* name, int32_t* len) { return 0; } -int32_t tsem_wait(tsem_t* sem) { - int ret = 0; - do { - ret = sem_wait(sem); - } while (ret != 0 && errno == EINTR); - return ret; -} - int32_t tsem_timewait(tsem_t* sem, int64_t ms) { int ret = 0; @@ -241,4 +233,101 @@ int32_t tsem_timewait(tsem_t* sem, int64_t ms) { return ret; } +int32_t tsem_wait(tsem_t* sem) { + int ret = 0; + do { + ret = sem_wait(sem); + } while (ret != 0 && errno == EINTR); + return ret; +} + +int tsem2_init(tsem2_t* sem, int pshared, unsigned int value) { + int ret = taosThreadMutexInit(&sem->mutex, NULL); + if (ret != 0) return ret; + ret = taosThreadCondAttrInit(&sem->attr); + if (ret != 0) + { + taosThreadMutexDestroy(&sem->mutex); + return ret; + } + ret = taosThreadCondAttrSetclock(&sem->attr, CLOCK_MONOTONIC); + if (ret != 0) + { + taosThreadMutexDestroy(&sem->mutex); + taosThreadCondAttrDestroy(&sem->attr); + return ret; + } + ret = taosThreadCondInit(&sem->cond, &sem->attr); + if (ret != 0) + { + taosThreadMutexDestroy(&sem->mutex); + taosThreadCondAttrDestroy(&sem->attr); + return ret; + } + + sem->count = value; + return 0; +} + +int tsem2_post(tsem2_t *sem) { + taosThreadMutexLock(&sem->mutex); + sem->count++; + taosThreadCondSignal(&sem->cond); + taosThreadMutexUnlock(&sem->mutex); + return 0; +} + +int tsem2_destroy(tsem2_t* sem) { + taosThreadMutexDestroy(&sem->mutex); + taosThreadCondDestroy(&sem->cond); + taosThreadCondAttrDestroy(&sem->attr); + return 0; +} + +int32_t tsem2_wait(tsem2_t* sem) { + taosThreadMutexLock(&sem->mutex); + while (sem->count <= 0) { + int ret = taosThreadCondWait(&sem->cond, &sem->mutex); + if (0 == ret) { + continue; + } else { + taosThreadMutexUnlock(&sem->mutex); + return ret; + } + } + sem->count--; + taosThreadMutexUnlock(&sem->mutex); + return 0; +} + +int32_t tsem2_timewait(tsem2_t* sem, int64_t ms) { + int ret = 0; + + taosThreadMutexLock(&sem->mutex); + if (sem->count <= 0) { + struct timespec ts = {0}; + if (clock_gettime(CLOCK_MONOTONIC, &ts) == -1) { + taosThreadMutexUnlock(&sem->mutex); + return -1; + } + + ts.tv_sec += ms / 1000; + ts.tv_nsec += (ms % 1000) * 1000000; + ts.tv_sec += ts.tv_nsec / 1000000000; + ts.tv_nsec %= 1000000000; + + while (sem->count <= 0) { + ret = taosThreadCondTimedWait(&sem->cond, &sem->mutex, &ts); + if (ret != 0) { + taosThreadMutexUnlock(&sem->mutex); + return ret; + } + } + } + + sem->count--; + taosThreadMutexUnlock(&sem->mutex); + return ret; +} + #endif diff --git a/source/os/src/osThread.c b/source/os/src/osThread.c index 0dd5374cf0..0acd6f67f5 100644 --- a/source/os/src/osThread.c +++ b/source/os/src/osThread.c @@ -170,6 +170,16 @@ int32_t taosThreadCondAttrInit(TdThreadCondAttr *attr) { #endif } +int32_t taosThreadCondAttrSetclock(TdThreadCondAttr *attr, int clockId) { +#ifdef __USE_WIN_THREAD + return 0; +#elif defined(__APPLE__) + return 0; +#else + return pthread_condattr_setclock(attr, clockId); +#endif +} + int32_t taosThreadCondAttrSetPshared(TdThreadCondAttr *attr, int32_t pshared) { #ifdef __USE_WIN_THREAD return 0; diff --git a/source/os/test/osSemaphoreTests.cpp b/source/os/test/osSemaphoreTests.cpp index 67cf4bb517..09fbe27f55 100644 --- a/source/os/test/osSemaphoreTests.cpp +++ b/source/os/test/osSemaphoreTests.cpp @@ -71,7 +71,6 @@ TEST(osSemaphoreTests, WaitTime1) { tsem_destroy(&sem); } - TEST(osSemaphoreTests, WaitAndPost) { tsem_t sem; int result = tsem_init(&sem, 0, 0); @@ -106,3 +105,135 @@ TEST(osSemaphoreTests, TimedWait) { result = tsem_destroy(&sem); EXPECT_EQ(result, 0); } + +TEST(osSemaphoreTests, Performance1_1) { + tsem_t sem; + const int count = 100000; + + tsem_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem_post(&sem); + } + }).detach(); + + for (int i = 0; i < count; ++i) { + tsem_wait(&sem); + } + tsem_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance1_2) { + tsem2_t sem; + const int count = 100000; + + tsem2_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem2_post(&sem); + } + }).detach(); + + for (int i = 0; i < count; ++i) { + tsem2_wait(&sem); + } + tsem2_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance2_1) { + tsem_t sem; + const int count = 50000; + + tsem_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem_post(&sem); + } + }).detach(); + + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem_post(&sem); + } + }).detach(); + + for (int i = 0; i < count * 2; ++i) { + tsem_wait(&sem); + } + tsem_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance2_2) { + tsem2_t sem; + const int count = 50000; + + tsem2_init(&sem, 0, 0); + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem2_post(&sem); + } + }).detach(); + + std::thread([&sem, count]() { + for (int i = 0; i < count; ++i) { + tsem2_post(&sem); + } + }).detach(); + + for (int i = 0; i < count * 2; ++i) { + tsem2_wait(&sem); + } + tsem2_destroy(&sem); +} + +TEST(osSemaphoreTests, Performance3_1) { + const int count = 100000; + + for (int i = 0; i < count; ++i) { + tsem_t sem; + tsem_init(&sem, 0, 1); + EXPECT_EQ(tsem_timewait(&sem, 1000), 0); + tsem_destroy(&sem); + } +} + +TEST(osSemaphoreTests, Performance3_2) { + const int count = 100000; + + for (int i = 0; i < count; ++i) { + tsem2_t sem; + tsem2_init(&sem, 0, 1); + EXPECT_EQ(tsem2_timewait(&sem, 1000), 0); + tsem2_destroy(&sem); + } +} + +TEST(osSemaphoreTests, Performance4_1) { + const int count = 1000; + for (int i = 0; i < count; ++i) { + tsem_t sem; + tsem_init(&sem, 0, 0); + std::thread([&sem, count]() { + tsem_post(&sem); + }).detach(); + + tsem_timewait(&sem, 1000); + + tsem_destroy(&sem); + } +} + +TEST(osSemaphoreTests, Performance4_2) { + const int count = 1000; + for (int i = 0; i < count; ++i) { + tsem2_t sem; + tsem2_init(&sem, 0, 0); + std::thread([&sem, count]() { + tsem2_post(&sem); + }).detach(); + + tsem2_timewait(&sem, 1000); + + tsem2_destroy(&sem); + } +} diff --git a/source/util/CMakeLists.txt b/source/util/CMakeLists.txt index 5ee0740eef..f907746821 100644 --- a/source/util/CMakeLists.txt +++ b/source/util/CMakeLists.txt @@ -21,29 +21,29 @@ target_include_directories( PRIVATE "${TD_SOURCE_DIR}/utils/TSZ/sz/inc" PRIVATE "${TD_SOURCE_DIR}/utils/TSZ/zstd/" PRIVATE "${TD_SOURCE_DIR}/contrib/lzma2/" + PRIVATE "${TD_SOURCE_DIR}/contrib/pcre2/" ) target_link_directories( util PUBLIC "${TD_SOURCE_DIR}/contrib/lzma2" + PUBLIC "${TD_SOURCE_DIR}/contrib/pcre2" ) - if (TD_LINUX) target_link_libraries( util PUBLIC os common - PUBLIC lz4_static fast-lzma2 - PUBLIC api cjson geos_c TSZ - - ) -else() + PUBLIC lz4_static fast-lzma2 pcre2-8 + PUBLIC api cjson geos_c TSZ + ) +else() target_link_libraries( util PUBLIC os common - PUBLIC lz4_static - PUBLIC api cjson geos_c TSZ - ) + PUBLIC lz4_static pcre2-8 + PUBLIC api cjson geos_c TSZ + ) endif() if(${BUILD_TEST}) diff --git a/source/util/src/tcompression.c b/source/util/src/tcompression.c index da67b68c1c..5a3dc867e6 100644 --- a/source/util/src/tcompression.c +++ b/source/util/src/tcompression.c @@ -61,9 +61,7 @@ #include "zstd.h" #endif -#ifdef TD_TSZ #include "td_sz.h" -#endif int32_t tsCompressPlain2(const char *const input, const int32_t nelements, char *const output, const char type); int32_t tsDecompressPlain2(const char *const input, const int32_t nelements, char *const output, const char type); @@ -322,7 +320,6 @@ static const int32_t TEST_NUMBER = 1; #define safeInt64Add(a, b) (((a >= 0) && (b <= INT64_MAX - a)) || ((a < 0) && (b >= INT64_MIN - a))) -#ifdef TD_TSZ bool lossyFloat = false; bool lossyDouble = false; @@ -341,8 +338,6 @@ int32_t tsCompressInit(char *lossyColumns, float fPrecision, double dPrecision, // exit call void tsCompressExit() { tdszExit(); } -#endif - /* * Compress Integer (Simple8B). */ @@ -1214,7 +1209,6 @@ int32_t tsDecompressFloatImp(const char *const input, const int32_t nelements, c return nelements * FLOAT_BYTES; } -#ifdef TD_TSZ // // ---------- float double lossy ----------- // @@ -1283,7 +1277,6 @@ int32_t tsDecompressDoubleLossyImp(const char *input, int32_t compressedSize, co // decompressed with sz return tdszDecompress(SZ_DOUBLE, input + 1, compressedSize - 1, nelements, output); } -#endif #ifdef BUILD_NO_CALL /************************************************************************* @@ -2463,13 +2456,11 @@ int32_t tsDecompressTimestamp(void *pIn, int32_t nIn, int32_t nEle, void *pOut, // Float ===================================================== int32_t tsCompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ // lossy mode if (lossyFloat) { return tsCompressFloatLossyImp(pIn, nEle, pOut); // lossless mode } else { -#endif if (cmprAlg == ONE_STAGE_COMP) { return tsCompressFloatImp(pIn, nEle, pOut); } else if (cmprAlg == TWO_STAGE_COMP) { @@ -2479,19 +2470,15 @@ int32_t tsCompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_ ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } int32_t tsDecompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ if (HEAD_ALGO(((uint8_t *)pIn)[0]) == ALGO_SZ_LOSSY) { // decompress lossy return tsDecompressFloatLossyImp(pIn, nIn, nEle, pOut); } else { -#endif // decompress lossless if (cmprAlg == ONE_STAGE_COMP) { return tsDecompressFloatImp(pIn, nEle, pOut); @@ -2502,20 +2489,16 @@ int32_t tsDecompressFloat(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int3 ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } // Double ===================================================== int32_t tsCompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ if (lossyDouble) { // lossy mode return tsCompressDoubleLossyImp(pIn, nEle, pOut); } else { -#endif // lossless mode if (cmprAlg == ONE_STAGE_COMP) { return tsCompressDoubleImp(pIn, nEle, pOut); @@ -2526,19 +2509,15 @@ int32_t tsCompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32 ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } int32_t tsDecompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int32_t nOut, uint8_t cmprAlg, void *pBuf, int32_t nBuf) { -#ifdef TD_TSZ if (HEAD_ALGO(((uint8_t *)pIn)[0]) == ALGO_SZ_LOSSY) { // decompress lossy return tsDecompressDoubleLossyImp(pIn, nIn, nEle, pOut); } else { -#endif // decompress lossless if (cmprAlg == ONE_STAGE_COMP) { return tsDecompressDoubleImp(pIn, nEle, pOut); @@ -2549,9 +2528,7 @@ int32_t tsDecompressDouble(void *pIn, int32_t nIn, int32_t nEle, void *pOut, int ASSERTS(0, "compress algo invalid"); return -1; } -#ifdef TD_TSZ } -#endif } // Binary ===================================================== diff --git a/source/util/src/terror.c b/source/util/src/terror.c index add01b3188..ad811cc891 100644 --- a/source/util/src/terror.c +++ b/source/util/src/terror.c @@ -259,6 +259,7 @@ TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_IN_CREATING, "Database in creating TAOS_DEFINE_ERROR(TSDB_CODE_MND_ENCRYPT_NOT_ALLOW_CHANGE, "Encryption is not allowed to be changed after database is created") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INCONSIST_ENCRYPT_KEY, "Inconsistent encryption key") TAOS_DEFINE_ERROR(TSDB_CODE_MND_INVALID_ENCRYPT_KEY, "The cluster has not been set properly for database encryption") +TAOS_DEFINE_ERROR(TSDB_CODE_MND_DB_ENCRYPT_GRANT_EXPIRED, "The database encryption function grant expired") // mnode-node TAOS_DEFINE_ERROR(TSDB_CODE_MND_MNODE_ALREADY_EXIST, "Mnode already exists") diff --git a/source/util/src/tgeosctx.c b/source/util/src/tgeosctx.c index b4e7e953df..b60e9ee8ac 100644 --- a/source/util/src/tgeosctx.c +++ b/source/util/src/tgeosctx.c @@ -43,6 +43,10 @@ void destroyThreadLocalGeosCtx() { tlGeosCtx.WKBWriter = NULL; } + if (tlGeosCtx.WKTRegex) { + destroyRegexes(tlGeosCtx.WKTRegex, tlGeosCtx.WKTMatchData); + } + if(tlGeosCtx.handle) { GEOS_finish_r(tlGeosCtx.handle); tlGeosCtx.handle = NULL; diff --git a/source/util/src/tpcr2.c b/source/util/src/tpcr2.c new file mode 100644 index 0000000000..5f5e4ffde6 --- /dev/null +++ b/source/util/src/tpcr2.c @@ -0,0 +1,35 @@ +#include "tpcre2.h" + +int32_t doRegComp(pcre2_code** ppRegex, pcre2_match_data** ppMatchData, const char* pattern) { + uint32_t options = PCRE2_CASELESS; + int errorcode; + PCRE2_SIZE erroroffset; + + *ppRegex = pcre2_compile((PCRE2_SPTR8)pattern, PCRE2_ZERO_TERMINATED, options, &errorcode, &erroroffset, NULL); + if (*ppRegex == NULL) { + PCRE2_UCHAR buffer[256]; + pcre2_get_error_message(errorcode, buffer, sizeof(buffer)); + return 1; + } + + *ppMatchData = pcre2_match_data_create_from_pattern(*ppRegex, NULL); + + return 0; +} + +int32_t doRegExec(const char* pString, pcre2_code* pRegex, pcre2_match_data* pMatchData) { + int32_t ret = 0; + ret = pcre2_match(pRegex, (PCRE2_SPTR)pString, PCRE2_ZERO_TERMINATED, 0, 0, pMatchData, NULL); + if (ret < 0) { + PCRE2_UCHAR buffer[256]; + pcre2_get_error_message(ret, buffer, sizeof(buffer)); + return 1; + } + + return (ret > 0) ? 0 : 1; +} + +void destroyRegexes(pcre2_code* pWktRegex, pcre2_match_data* pWktMatchData) { + pcre2_code_free(pWktRegex); + pcre2_match_data_free(pWktMatchData); +} diff --git a/source/util/test/CMakeLists.txt b/source/util/test/CMakeLists.txt index 07981483bb..e8e3348343 100644 --- a/source/util/test/CMakeLists.txt +++ b/source/util/test/CMakeLists.txt @@ -13,7 +13,7 @@ IF (HEADER_GTEST_INCLUDE_DIR AND (LIB_GTEST_STATIC_DIR OR LIB_GTEST_SHARED_DIR)) LIST(REMOVE_ITEM SOURCE_LIST ${CMAKE_CURRENT_SOURCE_DIR}/trefTest.c) ADD_EXECUTABLE(utilTest ${SOURCE_LIST}) - TARGET_LINK_LIBRARIES(utilTest util common os gtest pthread public taos) + TARGET_LINK_LIBRARIES(utilTest util common os gtest pthread) LIST(REMOVE_ITEM SOURCE_LIST ${CMAKE_CURRENT_SOURCE_DIR}/cacheTest.cpp) LIST(APPEND SOURCE_LIST ${CMAKE_CURRENT_SOURCE_DIR}/hashTest.cpp) diff --git a/tests/army/community/insert/insert_basic.py b/tests/army/community/insert/insert_basic.py new file mode 100644 index 0000000000..481db4eadd --- /dev/null +++ b/tests/army/community/insert/insert_basic.py @@ -0,0 +1,86 @@ +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import time +import random + +import taos +import frame +import frame.etool + + +from frame.log import * +from frame.cases import * +from frame.sql import * +from frame.caseBase import * +from frame import * + + +class TDTestCase(TBase): + + def checkGeometry(self): + tdLog.info(f"check geometry") + + tdSql.execute("create database db_geometry;") + tdSql.execute("use db_geometry;") + tdSql.execute("create table t_ge (ts timestamp, id int, c1 GEOMETRY(512));") + tdSql.execute("insert into t_ge values(now, 1, 'MULTIPOINT ((0 0), (1 1))');") + tdSql.execute("insert into t_ge values(now, 1, 'MULTIPOINT (0 0, 1 1)');") + tdSql.execute("insert into t_ge values(now, 2, 'POINT (0 0)');") + tdSql.execute("insert into t_ge values(now, 2, 'POINT EMPTY');") + tdSql.execute("insert into t_ge values(now, 3, 'LINESTRING (0 0, 0 1, 1 2)');") + tdSql.execute("insert into t_ge values(now, 3, 'LINESTRING EMPTY');") + tdSql.execute("insert into t_ge values(now, 4, 'POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))');") + tdSql.execute("insert into t_ge values(now, 4, 'POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0), (1 1, 1 2, 2 2, 2 1, 1 1))');") + tdSql.execute("insert into t_ge values(now, 4, 'POLYGON EMPTY');") + tdSql.execute("insert into t_ge values(now, 5, 'MULTILINESTRING ((0 0, 1 1), (2 2, 3 3))');") + tdSql.execute("insert into t_ge values(now, 6, 'MULTIPOLYGON (((1 1, 1 3, 3 3, 3 1, 1 1)), ((4 3, 6 3, 6 1, 4 1, 4 3)))');") + tdSql.execute("insert into t_ge values(now, 7, 'GEOMETRYCOLLECTION (MULTIPOINT((0 0), (1 1)), POINT(3 4), LINESTRING(2 3, 3 4))');") + tdSql.query("select * from t_ge;") + tdSql.checkRows(12) + tdSql.query("select * from t_ge where id=1;") + tdSql.checkRows(2) + tdSql.query("select * from t_ge where id=2;") + tdSql.checkRows(2) + tdSql.query("select * from t_ge where id=3;") + tdSql.checkRows(2) + tdSql.query("select * from t_ge where id=4;") + tdSql.checkRows(3) + tdSql.query("select * from t_ge where id=5;") + tdSql.checkRows(1) + tdSql.query("select * from t_ge where id=6;") + tdSql.checkRows(1) + tdSql.query("select * from t_ge where id=7;") + tdSql.checkRows(1) + + def checkDataType(self): + tdLog.info(f"check datatype") + + self.checkGeometry() + + + + # run + def run(self): + tdLog.debug(f"start to excute {__file__}") + + # check insert datatype + self.checkDataType() + + tdLog.success(f"{__file__} successfully executed") + + + +tdCases.addLinux(__file__, TDTestCase()) +tdCases.addWindows(__file__, TDTestCase()) \ No newline at end of file diff --git a/tests/army/community/query/show.py b/tests/army/community/query/show.py index 9192aee06e..980e60387a 100644 --- a/tests/army/community/query/show.py +++ b/tests/army/community/query/show.py @@ -102,6 +102,22 @@ class TDTestCase(TBase): allRows = self.insert_rows * self.childtable_count tdSql.checkFirstValue(sql, allRows) + def checkShowTags(self): + # verification for TD-29904 + tdSql.error("show tags from t100000", expectErrInfo='Fail to get table info, error: Table does not exist') + + sql = "show tags from child1" + tdSql.query(sql) + tdSql.checkRows(5) + + sql = f"show tags from child1 from {self.db}" + tdSql.query(sql) + tdSql.checkRows(5) + + sql = f"show tags from {self.db}.child1" + tdSql.query(sql) + tdSql.checkRows(5) + def checkShow(self): # not support sql = "show accounts;" @@ -125,10 +141,12 @@ class TDTestCase(TBase): sqls = [ "show scores;", "SHOW CLUSTER VARIABLES", - "SHOW BNODES;", + # "SHOW BNODES;", ] tdSql.executes(sqls) + self.checkShowTags() + # run def run(self): @@ -143,6 +161,9 @@ class TDTestCase(TBase): # do action self.doQuery() + # check show + self.checkShow() + tdLog.success(f"{__file__} successfully executed") diff --git a/tests/army/community/storage/compressBasic.py b/tests/army/community/storage/compressBasic.py index db52c9baf8..48254fe3ac 100644 --- a/tests/army/community/storage/compressBasic.py +++ b/tests/army/community/storage/compressBasic.py @@ -47,14 +47,20 @@ class TDTestCase(TBase): dtypes = [ "tinyint","tinyint unsigned","smallint","smallint unsigned","int","int unsigned", "bigint","bigint unsigned","timestamp","bool","float","double","binary(16)","nchar(16)", "varchar(16)","varbinary(16)"] + + def combineValid(self, datatype, encode, compress): + if datatype != "float" and datatype != "double": + if compress == "tsz": + return False + return True def genAllSqls(self, stbName, max): # encode encodes = [ - [["tinyint","tinyint unsigned","smallint","smallint unsigned","int","int unsigned","bigint","bigint unsigned"], ["simple8b"]], - [["timestamp","bigint","bigint unsigned"], ["delta-i"]], - [["bool"], ["bit-packing"]], - [["float","double"], ["delta-d"]] + [["tinyint","tinyint unsigned","smallint","smallint unsigned","int","int unsigned","bigint","bigint unsigned"], ["simple8B"]], + [["timestamp","bigint","bigint unsigned"], ["Delta-i"]], + [["bool"], ["Bit-packing"]], + [["float","double"], ["Delta-d"]] ] c = 0 # column number @@ -65,7 +71,6 @@ class TDTestCase(TBase): # loop append sqls for lines in encodes: - print(lines) for datatype in lines[0]: for encode in lines[1]: for compress in self.compresses: @@ -74,8 +79,9 @@ class TDTestCase(TBase): # first sql = f"create table {self.db}.st{t} (ts timestamp" else: - sql += f", c{c} {datatype} ENCODE '{encode}' COMPRESS '{compress}' LEVEL '{level}'" - c += 1 + if self.combineValid(datatype, encode, compress): + sql += f", c{c} {datatype} ENCODE '{encode}' COMPRESS '{compress}' LEVEL '{level}'" + c += 1 if c >= max: # append sqls @@ -97,9 +103,11 @@ class TDTestCase(TBase): # check error create def errorCreate(self): sqls = [ - f"create table terr(ts timestamp, c0 int ENCODE 'abc') ", - f"" + f"create table terr(ts timestamp, c0 int ENCODE 'simple8B' COMPRESS 'tsz' LEVEL 'high') ", + f"create table terr(ts timestamp, bi bigint encode 'bit-packing') tags (area int);" + f"create table terr(ts timestamp, ic int encode 'delta-d') tags (area int);" ] + tdSql.errors(sqls) for dtype in self.dtypes: # encode @@ -111,6 +119,11 @@ class TDTestCase(TBase): # level sql = f"create table terr(ts timestamp, c0 {dtype} LEVEL 'hig') " tdSql.error(sql) + + # tsz check + if dtype != "float" and dtype != "double": + sql = f"create table terr(ts timestamp, c0 {dtype} COMPRESS 'tsz') " + tdSql.error(sql) # default value correct def defaultCorrect(self): diff --git a/tests/parallel_test/cases.task b/tests/parallel_test/cases.task index 816288b5e9..7348b1fea0 100644 --- a/tests/parallel_test/cases.task +++ b/tests/parallel_test/cases.task @@ -11,7 +11,7 @@ # army-test # ,,y,army,./pytest.sh python3 ./test.py -f enterprise/multi-level/mlevel_basic.py -N 3 -L 3 -D 2 -,,y,army,./pytest.sh python3 ./test.py -f enterprise/s3/s3Basic.py -N 3 +,,n,army,python3 ./test.py -f enterprise/s3/s3Basic.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f community/cluster/snapshot.py -N 3 -L 3 -D 2 ,,y,army,./pytest.sh python3 ./test.py -f community/query/function/test_func_elapsed.py ,,y,army,./pytest.sh python3 ./test.py -f community/query/test_join.py @@ -20,6 +20,7 @@ ,,y,army,./pytest.sh python3 ./test.py -f community/query/fill/fill_desc.py -N 3 -L 3 -D 2 ,,y,army,./pytest.sh python3 ./test.py -f community/cluster/incSnapshot.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f community/query/query_basic.py -N 3 +,,y,army,./pytest.sh python3 ./test.py -f community/insert/insert_basic.py -N 3 ,,y,army,./pytest.sh python3 ./test.py -f community/cluster/splitVgroupByLearner.py -N 3 ,,n,army,python3 ./test.py -f community/cmdline/fullopt.py ,,n,army,python3 ./test.py -f community/query/show.py -N 3 diff --git a/tests/parallel_test/run_case.sh b/tests/parallel_test/run_case.sh index 7429c9976b..ff84d9e66c 100755 --- a/tests/parallel_test/run_case.sh +++ b/tests/parallel_test/run_case.sh @@ -79,7 +79,7 @@ md5sum /home/TDinternal/debug/build/lib/libtaos.so #define taospy 2.7.10 pip3 list|grep taospy pip3 uninstall taospy -y -pip3 install --default-timeout=120 taospy==2.7.13 +pip3 install --default-timeout=120 taospy==2.7.15 #define taos-ws-py 0.3.1 pip3 list|grep taos-ws-py diff --git a/tests/script/sh/checkAsan.sh b/tests/script/sh/checkAsan.sh index d2f1e13e8f..b1571aa173 100755 --- a/tests/script/sh/checkAsan.sh +++ b/tests/script/sh/checkAsan.sh @@ -72,7 +72,12 @@ python_error=$(cat ${LOG_DIR}/*.info | grep -w "stack" | wc -l) #0 0x7f2d64f5a808 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cc:144 #1 0x7f2d63fcf459 in strerror /build/glibc-SzIz7B/glibc-2.31/string/strerror.c:38 -runtime_error=$(cat ${LOG_DIR}/*.asan | grep "runtime error" | grep -v "trees.c:873" | grep -v "sclfunc.c.*outside the range of representable values of type" | grep -v "signed integer overflow" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cc" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cpp" | grep -v "sclvector.c" | wc -l) + +# TD-29953 +#/home/TDinternal/community/utils/TSZ/sz/src/sz_double.c:388:59: runtime error: 2.64021e+25 is outside the range of representable values of type 'long unsigned int' +#/home/TDinternal/community/utils/TSZ/sz/src/sz_float.c:407:59: runtime error: 5.76041e+19 is outside the range of representable values of type 'long unsigned int' +#/home/TDinternal/community/source/libs/scalar/src/sclfunc.c:808:11: runtime error: -3.40401e+18 is outside the range of representable values of type 'int' +runtime_error=$(cat ${LOG_DIR}/*.asan | grep "runtime error" | grep -v "trees.c:873" | grep -v "sclfunc.c.*outside the range of representable values of type" | grep -v "signed integer overflow" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cc" | grep -v "strerror.c" | grep -v "asan_malloc_linux.cpp" | grep -v "sclvector.c" | grep -v "sclfunc.c:808"| grep -v "sz_double.c:388" | grep -v "sz_float.c:407:59"| wc -l) echo -e "\033[44;32;1m"asan error_num: $error_num"\033[0m" echo -e "\033[44;32;1m"asan memory_leak: $memory_leak"\033[0m" diff --git a/tests/script/tsim/query/sys_tbname.sim b/tests/script/tsim/query/sys_tbname.sim index 716937f073..7739ea5373 100644 --- a/tests/script/tsim/query/sys_tbname.sim +++ b/tests/script/tsim/query/sys_tbname.sim @@ -135,4 +135,177 @@ endi print =========================== td-24781 sql select DISTINCT (`precision`) from `information_schema`.`ins_databases` PARTITION BY `precision` +print =========================ins_stables + +print create database test vgroups 4; +sql create database test vgroups 4; +sql use test; +sql create stable st1(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st2(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st3(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st4(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st5(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st6(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st7(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st8(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st9(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st10(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st11(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st12(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st13(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st14(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st15(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st16(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st17(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st18(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st19(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st20(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st21(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st22(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st23(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st24(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st25(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st26(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st27(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st28(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st29(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st30(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st31(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st32(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st33(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st34(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st35(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st36(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st37(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st38(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st39(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st40(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st41(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st42(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st43(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st44(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st45(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st46(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st47(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st48(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st49(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st50(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st51(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st52(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st53(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st54(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st55(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st56(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st57(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st58(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st59(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st60(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st61(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st62(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st63(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st64(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st65(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st66(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st67(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st68(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st69(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st70(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); + +print create database test1 vgroups 4; +sql create database test1 vgroups 4; +sql use test1; + +sql create stable st1(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st2(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st3(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st4(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st5(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st6(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st7(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st8(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st9(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st10(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st11(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st12(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st13(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st14(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st15(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st16(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st17(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st18(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st19(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st20(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st21(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st22(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st23(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st24(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st25(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st26(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st27(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st28(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st29(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st30(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st31(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st32(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st33(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st34(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st35(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st36(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st37(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st38(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st39(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st40(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st41(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st42(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st43(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st44(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st45(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st46(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st47(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st48(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st49(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st50(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st51(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st52(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st53(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st54(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st55(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st56(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st57(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st58(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st59(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st60(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st61(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st62(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st63(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st64(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st65(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st66(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st67(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st68(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st69(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); +sql create stable st70(ts timestamp,a int,b int,c int) tags(ta int,tb int,tc int); + +sleep 1000 + +sql select * from information_schema.ins_stables where db_name = "test" limit 68,32; + +print $data00 $data01 $data02 $data03 +print $data10 $data11 $data12 $data13 +print $data20 $data21 $data22 $data23 + +if $rows != 2 then + return -1 +endi + +sql select * from information_schema.ins_stables where db_name = "test1" limit 68,32; + +print $data00 $data01 $data02 $data03 +print $data10 $data11 $data12 $data13 +print $data20 $data21 $data22 $data23 + +if $rows != 2 then + return -1 +endi + #system sh/exec.sh -n dnode1 -s stop -x SIGINT diff --git a/tests/system-test/0-others/information_schema.py b/tests/system-test/0-others/information_schema.py index 2924ebd388..944b2fbb1e 100644 --- a/tests/system-test/0-others/information_schema.py +++ b/tests/system-test/0-others/information_schema.py @@ -269,13 +269,17 @@ class TDTestCase: def ins_grants_check(self): grant_name_dict = { - 'stream':'stream', - 'subscription':'subscription', - 'view':'view', - 'audit':'audit', - 'csv':'csv', - 'storage':'multi_tier_storage', - 'backup_restore':'backup_restore', + 'stream':'Stream', + 'subscription':'Subscription', + 'view':'View', + 'audit':'Audit', + 'csv':'CSV', + 'storage':'Multi-Tier Storage', + 'backup_restore':'Data Backup & Restore', + 'object_storage':'Object Storage', + 'active_active':'Active-Active', + 'dual_replica':'Dual-Replica HA', + 'db_encryption':'Database Encryption', 'opc_da':'OPC_DA', 'opc_ua':'OPC_UA', 'pi':'Pi', @@ -285,7 +289,10 @@ class TDTestCase: 'avevahistorian':'avevaHistorian', 'opentsdb':'OpenTSDB', 'td2.6':'TDengine2.6', - 'td3.0':'TDengine3.0' + 'td3.0':'TDengine3.0', + 'mysql':'MySQL', + 'postgres':'PostgreSQL', + 'oracle':'Oracle', } tdSql.execute('drop database if exists db2') @@ -297,7 +304,7 @@ class TDTestCase: if result[i][0] in grant_name_dict: tdSql.checkEqual(result[i][1], grant_name_dict[result[i][0]]) index += 1 - tdSql.checkEqual(index, 17) + tdSql.checkEqual(index, 24) tdSql.query(f'select * from information_schema.ins_grants_logs') result = tdSql.queryResult tdSql.checkEqual(True, len(result) >= 0) diff --git a/tests/system-test/0-others/show_tag_index.py b/tests/system-test/0-others/show_tag_index.py index 3f1b598589..d84d4193c4 100644 --- a/tests/system-test/0-others/show_tag_index.py +++ b/tests/system-test/0-others/show_tag_index.py @@ -78,6 +78,11 @@ class TDTestCase: tdSql.execute(f'create table stb (ts timestamp, c0 int) tags (t0 int, t1 int)') tdSql.execute(f'create table ctb1 using stb tags (1, 1)') tdSql.execute(f'create table ctb2 using stb tags (2, 2)') + tdSql.execute(f'create table ntb (ts timestamp, c0 int)') + tdSql.execute(f'create view vtb as select * from stb') + tdSql.execute(f'create view vtb1 as select * from ctb1') + tdSql.execute(f'create view vtb2 as select * from ctb2') + tdSql.execute(f'create view vtbn as select * from ntb') tdSql.execute(f'insert into ctb1 values (now, 1)') tdSql.execute(f'insert into ctb2 values (now, 2)') @@ -113,9 +118,14 @@ class TDTestCase: tdSql.error(f'show tags from `db`.`stb` from db') tdSql.error(f'show tags from db.ctb1 from db') tdSql.error(f'show tags from `db`.`ctb1` from db') - tdSql.error(f'show tags from tb_undef from db') - tdSql.error(f'show tags from db.tb_undef') - tdSql.error(f'show tags from tb_undef') + tdSql.error(f'show tags from tb_undef from db', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show tags from db.tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show tags from tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show tags from ntb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtb1', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtb2', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show tags from vtbn', expectErrInfo='Tags can only applied to super table and child table') # show table tags tdSql.query(f'show table tags from stb') @@ -148,9 +158,14 @@ class TDTestCase: tdSql.error(f'show table tags from `db`.`stb` from db') tdSql.error(f'show table tags from db.ctb1 from db') tdSql.error(f'show table tags from `db`.`ctb1` from db') - tdSql.error(f'show table tags from tb_undef from db') - tdSql.error(f'show table tags from db.tb_undef') - tdSql.error(f'show table tags from tb_undef') + tdSql.error(f'show table tags from tb_undef from db', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show table tags from db.tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show table tags from tb_undef', expectErrInfo='Fail to get table info, error: Table does not exist') + tdSql.error(f'show table tags from ntb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtb', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtb1', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtb2', expectErrInfo='Tags can only applied to super table and child table') + tdSql.error(f'show table tags from vtbn', expectErrInfo='Tags can only applied to super table and child table') # show indexes tdSql.execute(f'create index idx1 on stb (t1)') diff --git a/tests/system-test/1-insert/composite_primary_key_insert.py b/tests/system-test/1-insert/composite_primary_key_insert.py index 1a22eb781c..c888bacadc 100644 --- a/tests/system-test/1-insert/composite_primary_key_insert.py +++ b/tests/system-test/1-insert/composite_primary_key_insert.py @@ -31,8 +31,8 @@ class LegalDataType(Enum): UINT = 'INT UNSIGNED' BIGINT = 'BIGINT' UBIGINT = 'BIGINT UNSIGNED' - VARCHAR = 'VARCHAR(100)' - BINARY = 'BINARY(100)' + VARCHAR = 'VARCHAR(10000)' + BINARY = 'BINARY(10000)' class TableType(Enum): diff --git a/tests/system-test/2-query/partition_by_col.py b/tests/system-test/2-query/partition_by_col.py index 549e2738be..ef88e88cbd 100644 --- a/tests/system-test/2-query/partition_by_col.py +++ b/tests/system-test/2-query/partition_by_col.py @@ -22,7 +22,7 @@ class TDTestCase: self.vgroups = 4 self.ctbNum = 10 self.rowsPerTbl = 10000 - self.duraion = '1h' + self.duraion = '1d' def init(self, conn, logSql, replicaVar=1): self.replicaVar = int(replicaVar) @@ -33,7 +33,7 @@ class TDTestCase: if dropFlag == 1: tsql.execute("drop database if exists %s"%(dbName)) - tsql.execute("create database if not exists %s vgroups %d replica %d duration %s"%(dbName, vgroups, replica, duration)) + tsql.execute("create database if not exists %s vgroups %d replica %d duration %s stt_trigger 1"%(dbName, vgroups, replica, duration)) tdLog.debug("complete to create database %s"%(dbName)) return @@ -266,11 +266,11 @@ class TDTestCase: #'select _wstart as ts, count(*), t1 as a, %s from meters partition by t1, %s interval(30m)' % (col_name, col_name), #'select _wstart as ts, count(*), t1 as a, %s from meters partition by t1, %s interval(1h)' % (col_name, col_name), - 'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1s)' % (col_name, col_name, col_name), + 'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(30d)' % (col_name, col_name, col_name), #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(30s)' % (col_name, col_name, col_name), #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1m)' % (col_name, col_name, col_name), #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(30m)' % (col_name, col_name, col_name), - #'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1h)' % (col_name, col_name, col_name), + 'select _wstart as ts, count(*), %s as a, %s from meters partition by %s interval(1h)' % (col_name, col_name, col_name), 'select _wstart as ts, count(*), tbname as a, %s from meters partition by %s, tbname interval(1s)' % (col_name, col_name), 'select _wstart as ts, count(*), t1 as a, %s from meters partition by %s, t1 interval(1s)' % (col_name, col_name), @@ -317,6 +317,7 @@ class TDTestCase: def run(self): self.prepareTestEnv() + tdSql.execute('flush database test') #time.sleep(99999999) self.test_sort_for_partition_hint() self.test_sort_for_partition_res() diff --git a/tests/system-test/8-stream/stream_basic.py b/tests/system-test/8-stream/stream_basic.py index c32f9a3166..2067c2395e 100644 --- a/tests/system-test/8-stream/stream_basic.py +++ b/tests/system-test/8-stream/stream_basic.py @@ -87,7 +87,7 @@ class TDTestCase: tdSql.execute(f'insert into t2 using st tags(2) values(now, 1) (now+1s, 2)') tdSql.execute(f'insert into t3 using st tags(3) values(now, 1) (now+1s, 2)') - tdSql.execute("create stream stream1 fill_history 1 into sta subtable(concat('new-', tname)) AS SELECT " + tdSql.execute("create stream stream1 fill_history 1 into sta subtable(concat('nee.w-', tname)) AS SELECT " "_wstart, count(*), avg(i) FROM st PARTITION BY tbname tname INTERVAL(1m)", show=True) tdSql.execute("create stream stream2 fill_history 1 into stb subtable(concat('new-', tname)) AS SELECT " @@ -97,25 +97,25 @@ class TDTestCase: tdSql.query("select * from sta") tdSql.checkRows(3) tdSql.query("select tbname from sta order by tbname") - if not tdSql.getData(0, 0).startswith('new-t1_1.d1.sta_'): + if not tdSql.getData(0, 0).startswith('nee_w-t1_sta_'): tdLog.exit("error1") - if not tdSql.getData(1, 0).startswith('new-t2_1.d1.sta_'): + if not tdSql.getData(1, 0).startswith('nee_w-t2_sta_'): tdLog.exit("error2") - if not tdSql.getData(2, 0).startswith('new-t3_1.d1.sta_'): + if not tdSql.getData(2, 0).startswith('nee_w-t3_sta_'): tdLog.exit("error3") tdSql.query("select * from stb") tdSql.checkRows(3) tdSql.query("select tbname from stb order by tbname") - if not tdSql.getData(0, 0).startswith('new-t1_1.d1.stb_'): + if not tdSql.getData(0, 0).startswith('new-t1_stb_'): tdLog.exit("error4") - if not tdSql.getData(1, 0).startswith('new-t2_1.d1.stb_'): + if not tdSql.getData(1, 0).startswith('new-t2_stb_'): tdLog.exit("error5") - if not tdSql.getData(2, 0).startswith('new-t3_1.d1.stb_'): + if not tdSql.getData(2, 0).startswith('new-t3_stb_'): tdLog.exit("error6") # run diff --git a/utils/test/c/tsz_test.c b/utils/test/c/tsz_test.c index ee17ecb8f6..063186ee52 100644 --- a/utils/test/c/tsz_test.c +++ b/utils/test/c/tsz_test.c @@ -18,12 +18,9 @@ #include #include - -#if defined(WINDOWS) -int main(int argc, char *argv[]) { - printf("welcome to use taospack tools v1.3 for windows.\n"); -} -#elif !defined(TD_TSZ) +#if defined(WINDOWS) +int main(int argc, char *argv[]) { printf("welcome to use taospack tools v1.3 for windows.\n"); } +#elif !defined(TD_TSZ) int main(int argc, char *argv[]) { printf(" welcome taospack. \n You not open TSZ , please define TD_TSZ to open TSZ algo.\n"); } @@ -33,72 +30,2074 @@ int main(int argc, char *argv[]) { #include "tcompression.h" #include "tdataformat.h" - - // ------- define ----------- -#define FT_CNT 8 +#define FT_CNT 8 // ------- function declare -------- -void cost_start(); +void cost_start(); double cost_end(const char* tag); -int notsame_cnt = 0; +int notsame_cnt = 0; // ------- global declare ----------- -float g_ft1[ ] = {\ - 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - ,3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - }; +float g_ft1[] = {3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, + 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, + 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, + 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, + 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, + 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, + 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, + 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, + 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, + 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, + 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, + 3.8919999599456787, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, + 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, + 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, + 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, + 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, + 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422}; -double g_de1[ ] = {\ - 3.895999908447265612345, 3.897000074386596701234, 3.89800000190734860123456789, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - ,3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8949999809265137, 3.8970000743865967, 3.8980000019073486, 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.630000114440918, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.8940000534057617, 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, 3.8940000534057617, 3.8929998874664307, 3.8919999599456787\ - ,3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, 3.7049999237060547, 3.7060000896453857, 3.7060000896453857\ - ,3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.634000062942505, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.63100004196167, 3.63100004196167, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.63100004196167, 3.63100004196167, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.63100004196167, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.631999969482422, 3.632999897003174, 3.631999969482422, 3.632999897003174, 3.631999969482422 - }; +double g_de1[] = {3.895999908447265612345, 3.897000074386596701234, 3.89800000190734860123456789, + 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, + 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, + 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, + 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, + 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, + 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, + 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, + 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, + 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, + 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.634000062942505, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8959999084472656, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8980000019073486, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8980000019073486, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8949999809265137, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8970000743865967, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8980000019073486, 3.8949999809265137, 3.8959999084472656, + 3.8980000019073486, 3.8970000743865967, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8970000743865967, 3.8970000743865967, + 3.8949999809265137, 3.8940000534057617, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8970000743865967, 3.8959999084472656, + 3.8970000743865967, 3.8970000743865967, 3.8959999084472656, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8940000534057617, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8959999084472656, + 3.9010000228881836, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8980000019073486, 3.8970000743865967, + 3.8989999294281006, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8949999809265137, 3.8970000743865967, 3.8980000019073486, + 3.8980000019073486, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8970000743865967, + 3.8970000743865967, 3.8959999084472656, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8970000743865967, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8970000743865967, 3.8940000534057617, 3.8959999084472656, + 3.8970000743865967, 3.8959999084472656, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8959999084472656, 3.8959999084472656, + 3.8940000534057617, 3.8929998874664307, 3.8959999084472656, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8959999084472656, 3.8970000743865967, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8970000743865967, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8959999084472656, 3.8949999809265137, + 3.8959999084472656, 3.8959999084472656, 3.8949999809265137, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8959999084472656, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.9000000953674316, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8959999084472656, 3.8959999084472656, + 3.8980000019073486, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.630000114440918, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.63100004196167, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8940000534057617, 3.8959999084472656, 3.8970000743865967, + 3.8970000743865967, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8959999084472656, + 3.8959999084472656, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8949999809265137, 3.8940000534057617, + 3.8929998874664307, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8929998874664307, 3.8940000534057617, + 3.8959999084472656, 3.8949999809265137, 3.8929998874664307, + 3.8940000534057617, 3.8929998874664307, 3.8940000534057617, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8949999809265137, + 3.8929998874664307, 3.8929998874664307, 3.8959999084472656, + 3.8929998874664307, 3.8949999809265137, 3.8929998874664307, + 3.8959999084472656, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8949999809265137, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8949999809265137, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8929998874664307, 3.8949999809265137, + 3.8949999809265137, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8949999809265137, 3.8940000534057617, + 3.8949999809265137, 3.8949999809265137, 3.8940000534057617, + 3.8970000743865967, 3.8940000534057617, 3.8929998874664307, + 3.8929998874664307, 3.8929998874664307, 3.8949999809265137, + 3.8940000534057617, 3.8940000534057617, 3.8959999084472656, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8959999084472656, 3.8940000534057617, 3.8949999809265137, + 3.8929998874664307, 3.8940000534057617, 3.8949999809265137, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.8929998874664307, 3.8940000534057617, 3.8929998874664307, + 3.8940000534057617, 3.8949999809265137, 3.8929998874664307, + 3.8929998874664307, 3.8940000534057617, 3.8940000534057617, + 3.8949999809265137, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8929998874664307, 3.8940000534057617, + 3.8989999294281006, 3.8929998874664307, 3.8929998874664307, + 3.8929998874664307, 3.8919999599456787, 3.8940000534057617, + 3.8940000534057617, 3.8940000534057617, 3.8949999809265137, + 3.8949999809265137, 3.8949999809265137, 3.8949999809265137, + 3.8970000743865967, 3.8940000534057617, 3.8940000534057617, + 3.8940000534057617, 3.8929998874664307, 3.8919999599456787, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7079999446868896, 3.7079999446868896, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7079999446868896, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7100000381469727, 3.7109999656677246, 3.7119998931884766, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7090001106262207, 3.7100000381469727, 3.7119998931884766, + 3.7090001106262207, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7100000381469727, 3.7079999446868896, 3.7060000896453857, + 3.7049999237060547, 3.7070000171661377, 3.7070000171661377, + 3.7100000381469727, 3.7119998931884766, 3.7119998931884766, + 3.7090001106262207, 3.7079999446868896, 3.7070000171661377, + 3.7139999866485596, 3.7109999656677246, 3.7109999656677246, + 3.7100000381469727, 3.7070000171661377, 3.7060000896453857, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7130000591278076, 3.7100000381469727, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7070000171661377, 3.7090001106262207, 3.7119998931884766, + 3.7130000591278076, 3.7109999656677246, 3.7079999446868896, + 3.7090001106262207, 3.7090001106262207, 3.7119998931884766, + 3.7109999656677246, 3.7109999656677246, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7070000171661377, 3.7060000896453857, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7090001106262207, 3.7109999656677246, + 3.7119998931884766, 3.7109999656677246, 3.7090001106262207, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7109999656677246, 3.7119998931884766, 3.7079999446868896, + 3.7079999446868896, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7090001106262207, 3.7100000381469727, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7079999446868896, 3.7079999446868896, 3.7100000381469727, + 3.7070000171661377, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7090001106262207, 3.7100000381469727, + 3.7090001106262207, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7070000171661377, 3.7079999446868896, + 3.7090001106262207, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7070000171661377, 3.7070000171661377, + 3.7090001106262207, 3.7070000171661377, 3.7060000896453857, + 3.7070000171661377, 3.7070000171661377, 3.7079999446868896, + 3.7070000171661377, 3.7060000896453857, 3.7060000896453857, + 3.7070000171661377, 3.7060000896453857, 3.7070000171661377, + 3.7060000896453857, 3.7079999446868896, 3.7060000896453857, + 3.7060000896453857, 3.7060000896453857, 3.7060000896453857, + 3.7079999446868896, 3.7070000171661377, 3.7070000171661377, + 3.7079999446868896, 3.7060000896453857, 3.7060000896453857, + 3.7109999656677246, 3.7070000171661377, 3.7060000896453857, + 3.7060000896453857, 3.7049999237060547, 3.7070000171661377, + 3.7100000381469727, 3.7079999446868896, 3.7070000171661377, + 3.7070000171661377, 3.7079999446868896, 3.7079999446868896, + 3.7149999141693115, 3.7079999446868896, 3.7070000171661377, + 3.7049999237060547, 3.7060000896453857, 3.7060000896453857, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.63100004196167, + 3.63100004196167, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.63100004196167, 3.631999969482422, 3.632999897003174, + 3.634000062942505, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.632999897003174, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.631999969482422, 3.631999969482422, 3.63100004196167, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.63100004196167, 3.63100004196167, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.632999897003174, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.632999897003174, 3.632999897003174, 3.631999969482422, + 3.63100004196167, 3.63100004196167, 3.631999969482422, + 3.632999897003174, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.63100004196167, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.63100004196167, 3.631999969482422, + 3.631999969482422, 3.632999897003174, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.631999969482422, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.631999969482422, 3.632999897003174, + 3.631999969482422, 3.632999897003174, 3.631999969482422}; /* struct timeval startTime; -struct timeval endTime; -struct timeval costStart; +struct timeval endTime; +struct timeval costStart; double totalCost = 0; void cost_start() { - totalCost = 0; + totalCost = 0; gettimeofday(&costStart, NULL); } @@ -111,93 +2110,84 @@ double cost_end(const char* tag) totalCost += elapsed; double use_ms = totalCost*1000; printf(" timecost %s : %.3f ms\n", tag, use_ms); - return use_ms; + return use_ms; } */ -float toFloat(char* buf){ - return (float)atoll(buf); -} +float toFloat(char* buf) { return (float)atoll(buf); } // -// read float +// read float // -float* read_float(const char* inFile, int* pcount){ +float* read_float(const char* inFile, int* pcount) { // check valid - if(inFile == NULL || inFile[0] == 0 ){ + if (inFile == NULL || inFile[0] == 0) { printf(" inFile is NULL or EMPTY.\n"); return NULL; } // read in file - TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); - if(pfin == NULL){ + TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); + if (pfin == NULL) { printf(" open IN file %s error. errno=%d\n", inFile, errno); return false; } // read one line from infile and write to outfile - char buf[256]={0}; - int malloc_cnt = 100000; - float* floats = taosMemoryMalloc(malloc_cnt*sizeof(float)); - int fi = 0; - while(taosGetsFile(pfin, sizeof(buf), buf) > 0) { + char buf[256] = {0}; + int malloc_cnt = 100000; + float* floats = taosMemoryMalloc(malloc_cnt * sizeof(float)); + int fi = 0; + while (taosGetsFile(pfin, sizeof(buf), buf) > 0) { // get item - if(buf[0] == 0 || strcmp(buf, " ") == 0) - continue; + if (buf[0] == 0 || strcmp(buf, " ") == 0) continue; floats[fi] = atof(buf); - //printf(" buff=%s float=%.50f \n ", buf, floats[fi]); - if ( ++fi == malloc_cnt ) { + // printf(" buff=%s float=%.50f \n ", buf, floats[fi]); + if (++fi == malloc_cnt) { malloc_cnt += 100000; - float* floats1 = taosMemoryRealloc(floats, malloc_cnt*sizeof(float)); - if(floats1 == NULL) - break; - floats = floats1; + float* floats1 = taosMemoryRealloc(floats, malloc_cnt * sizeof(float)); + if (floats1 == NULL) break; + floats = floats1; } memset(buf, 0, sizeof(buf)); } // close taosCloseFile(&pfin); - if(pcount) - *pcount = fi; + if (pcount) *pcount = fi; return floats; } -float check_same(float* ft1, float* ft2, int count){ - int same_cnt =0; - for(int i=0; i< count; i++){ - - if(ft1[i] == ft2[i]){ - same_cnt ++; +float check_same(float* ft1, float* ft2, int count) { + int same_cnt = 0; + for (int i = 0; i < count; i++) { + if (ft1[i] == ft2[i]) { + same_cnt++; } - if(i < 5){ + if (i < 5) { printf(" i=%d ft1=%.40f diff=%.40f \n", i, ft1[i], ft1[i] - ft2[i]); printf(" i=%d ft2=%.40f \n", i, ft2[i]); } - } - float same_rate = same_cnt*100/count; + float same_rate = same_cnt * 100 / count; printf(" all count=%d same=%d same rate=%.0f%% \n", count, same_cnt, same_rate); return same_rate; } -double check_same_double(double* ft1, double* ft2, int count){ - int same_cnt =0; - for(int i=0; i< count; i++){ - - if(ft1[i] == ft2[i]){ - same_cnt ++; +double check_same_double(double* ft1, double* ft2, int count) { + int same_cnt = 0; + for (int i = 0; i < count; i++) { + if (ft1[i] == ft2[i]) { + same_cnt++; } - if(i < 5){ + if (i < 5) { printf(" i=%d ft1=%.40f diff=%.40f \n", i, ft1[i], ft1[i] - ft2[i]); printf(" i=%d ft2=%.40f \n", i, ft2[i]); } - } - double same_rate = same_cnt*100/count; + double same_rate = same_cnt * 100 / count; printf(" all count=%d same=%d same rate=%.0f%% \n", count, same_cnt, same_rate); return same_rate; } @@ -209,41 +2199,40 @@ double check_same_double(double* ft1, double* ft2, int count){ bool DoDouble(double* doubles, int cnt, int algorithm) { // compress const char* input = (const char*)doubles; - int input_len = cnt * sizeof(double); - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(double); + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; cost_start(); int ret_len = 0; - if(algorithm == 2) - ret_len = tsCompressDouble((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); + if (algorithm == 2) + ret_len = tsCompressDouble((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); else - ret_len = tsCompressDoubleLossy((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); + ret_len = tsCompressDoubleLossy((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - if(ret_len == -1) { + if (ret_len == -1) { printf(" compress error.\n"); return 0; } double use_ms1 = cost_end("compress"); printf(" compress len=%d input len=%d\n", ret_len, input_len); - double rate=100*(double)ret_len/(double)input_len; - printf(" compress rate=%.1f an-rate=%.4f%%\n", (double)input_len/(double)ret_len, rate); - - // + double rate = 100 * (double)ret_len / (double)input_len; + printf(" compress rate=%.1f an-rate=%.4f%%\n", (double)input_len / (double)ret_len, rate); + + // // decompress // - double* ft2 = (double*)taosMemoryMalloc(input_len); + double* ft2 = (double*)taosMemoryMalloc(input_len); cost_start(); int code = 0; - if(algorithm == 2) - code = tsDecompressDouble(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); + if (algorithm == 2) + code = tsDecompressDouble(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); else - code = tsDecompressDoubleLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - + code = tsDecompressDoubleLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); double use_ms2 = cost_end("Decompress"); printf(" Decompress return length=%d \n", code); @@ -251,19 +2240,18 @@ bool DoDouble(double* doubles, int cnt, int algorithm) { // compare same double same_rate = check_same_double(doubles, ft2, cnt); - printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, algorithm == 2?"TD":"SZ"); + printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, algorithm == 2 ? "TD" : "SZ"); printf(" Compress Rate ......... [%.2f%%] \n", rate); - double speed1 = (cnt*sizeof(double)*1000/1024/1024)/use_ms1; + double speed1 = (cnt * sizeof(double) * 1000 / 1024 / 1024) / use_ms1; printf(" Compress Time ......... [%.4fms] speed=%.1f MB/s\n", use_ms1, speed1); - double speed2 = (cnt*sizeof(double)*1000/1024/1024)/use_ms2; + double speed2 = (cnt * sizeof(double) * 1000 / 1024 / 1024) / use_ms2; printf(" Decompress Time........ [%.4fms] speed=%.1f MB/s\n", use_ms2, speed2); printf(" Same Rate ............. [%.0f%%] \n\n", same_rate); - // free taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); return true; } @@ -271,68 +2259,66 @@ bool DoDouble(double* doubles, int cnt, int algorithm) { bool DoFloat(float* floats, int cnt, int algorithm, bool lossy) { // compress const char* input = (const char*)floats; - int input_len = cnt * sizeof(float); - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(float); + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; cost_start(); int ret_len = 0; ret_len = tsCompressFloat((void*)input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - - if(ret_len == -1) { + + if (ret_len == -1) { printf(" compress error.\n"); return 0; } double use_ms1 = cost_end("compress"); printf(" compress len=%d input len=%d\n", ret_len, input_len); - float rate=100*(float)ret_len/(float)input_len; - printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len/(float)ret_len, rate); - - // + float rate = 100 * (float)ret_len / (float)input_len; + printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len / (float)ret_len, rate); + + // // decompress // - float* ft2 = (float*)taosMemoryMalloc(input_len); + float* ft2 = (float*)taosMemoryMalloc(input_len); cost_start(); int code = 0; code = tsDecompressFloat(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - + double use_ms2 = cost_end("Decompress"); printf(" Decompress return length=%d \n", code); // compare same float same_rate = check_same(floats, ft2, cnt); - printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, lossy?"SZ":"TD"); + printf("\n ------------------ count:%d <%s> ---------------- \n", cnt, lossy ? "SZ" : "TD"); printf(" Compress Rate ......... [%.2f%%] \n", rate); - double speed1 = (cnt*sizeof(float)*1000/1024/1024)/use_ms1; + double speed1 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms1; printf(" Compress Time ......... [%.4fms] speed=%.1f MB/s\n", use_ms1, speed1); - double speed2 = (cnt*sizeof(float)*1000/1024/1024)/use_ms2; + double speed2 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms2; printf(" Decompress Time........ [%.4fms] speed=%.1f MB/s\n", use_ms2, speed2); printf(" Same Rate ............. [%.0f%%] \n\n", same_rate); - // free taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); return true; } - -bool testFile(const char* inFile, char algorithm, bool lossy){ +bool testFile(const char* inFile, char algorithm, bool lossy) { // check valid - if(inFile == NULL || inFile[0] == 0 ){ + if (inFile == NULL || inFile[0] == 0) { printf(" inFile is NULL or EMPTY.\n"); return false; } - int cnt = 0; + int cnt = 0; float* floats = read_float(inFile, &cnt); - if(floats == NULL) { + if (floats == NULL) { return false; } @@ -345,54 +2331,54 @@ bool testFile(const char* inFile, char algorithm, bool lossy){ // txt to binary file // #define BUFF_CNT 256 -bool txt_to_bin(const char* inFile, const char* outFile){ +bool txt_to_bin(const char* inFile, const char* outFile) { // check valid - if(inFile == NULL || outFile == NULL || inFile[0] == 0 || outFile[0] == 0){ + if (inFile == NULL || outFile == NULL || inFile[0] == 0 || outFile[0] == 0) { printf(" inFile or outFile is NULL or EMPTY.\n"); return false; } - printf(" infile=%s \n", inFile); + printf(" infile=%s \n", inFile); printf(" outfile=%s \n", outFile); // read in file - TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); - if(pfin == NULL){ + TdFilePtr pfin = taosOpenFile(inFile, TD_FILE_READ); + if (pfin == NULL) { printf(" open IN file %s error. errno=%d\n", inFile, errno); return false; } // create out file TdFilePtr pfout = taosOpenFile(outFile, TD_FILE_WRITE); - if(pfout == NULL){ + if (pfout == NULL) { printf(" open OUT file %s error. errno=%d\n", outFile, errno); taosCloseFile(&pfin); return false; } // read one line from infile and write to outfile - char buf[256]={0}; + char buf[256] = {0}; float fbuf[BUFF_CNT] = {0}; int fi = 0; int count = 0; - while(taosGetsFile(pfin, sizeof(buf), buf) > 0) { + while (taosGetsFile(pfin, sizeof(buf), buf) > 0) { // get item fbuf[fi] = toFloat(buf); - if ( ++fi == BUFF_CNT ) { + if (++fi == BUFF_CNT) { // write - if(taosWriteFile(pfout,fbuf, sizeof(float)*BUFF_CNT) <= 0) { + if (taosWriteFile(pfout, fbuf, sizeof(float) * BUFF_CNT) <= 0) { printf(" write to file %s error , code=%d . app exit.\n", outFile, errno); exit(1); } fi = 0; } - count ++; + count++; memset(buf, 0, sizeof(buf)); } // write retain - if( fi > 0){ - if(taosWriteFile(pfout, fbuf, sizeof(float)*fi) <= 0) { + if (fi > 0) { + if (taosWriteFile(pfout, fbuf, sizeof(float) * fi) <= 0) { printf(" write to file %s error , code=%d . app exit.\n", outFile, errno); exit(1); } @@ -403,69 +2389,67 @@ bool txt_to_bin(const char* inFile, const char* outFile){ taosCloseFile(&pfout); // total - printf(" count=%d write bytes=%d \n", count, (int)(count*sizeof(float))); + printf(" count=%d write bytes=%d \n", count, (int)(count * sizeof(float))); return true; } - int memTestDouble() { // douelbe - const char* input = (const char*) g_de1; - double* de1 = g_de1; - int input_len = sizeof(g_de1); - int cnt = input_len/sizeof(double); + const char* input = (const char*)g_de1; + double* de1 = g_de1; + int input_len = sizeof(g_de1); + int cnt = input_len / sizeof(double); printf(" input input_len=%d count=%d \n", input_len, cnt); - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; - char buff[1024] ={0}; - int buff_len = sizeof(buff); + char buff[1024] = {0}; + int buff_len = sizeof(buff); cost_start(); int ret_len = tsCompressDoubleLossy(input, input_len, cnt, output, output_len, ONE_STAGE_COMP, buff, buff_len); - if(ret_len == -1) { + if (ret_len == -1) { printf(" compress error.\n"); return 0; } cost_end(" tscompress"); printf(" compress return len=%d input len=%d\n", ret_len, input_len); - printf(" compress rate=%.1f an-rate=%.0f%%\n", (float)input_len/(float)ret_len, 100*(float)ret_len/(float)input_len); - - // + printf(" compress rate=%.1f an-rate=%.0f%%\n", (float)input_len / (float)ret_len, + 100 * (float)ret_len / (float)input_len); + + // // decompress // - double* de2 = (double*)taosMemoryMalloc(input_len); + double* de2 = (double*)taosMemoryMalloc(input_len); cost_start(); int code = tsDecompressDoubleLossy(output, ret_len, cnt, (char*)de2, input_len, ONE_STAGE_COMP, buff, buff_len); cost_end("tsde-compress double"); printf(" de-compress return code=%d \n", code); - // // show // - int same_cnt = 0; - int diffshow_cnt = 0; - for(int i=0; i< cnt; i++){ + int same_cnt = 0; + int diffshow_cnt = 0; + for (int i = 0; i < cnt; i++) { + if (i < 10) printf(" i=%d de1=%.20f de2=%.20f same=%d\n", i, de1[i], de2[i], de1[i] == de2[i]); - if(i < 10) - printf(" i=%d de1=%.20f de2=%.20f same=%d\n", i, de1[i], de2[i], de1[i] == de2[i]); - - if(de1[i] == de2[i]) - same_cnt ++; + if (de1[i] == de2[i]) + same_cnt++; else { notsame_cnt++; - if(i >= 10 && ++diffshow_cnt < 50){ - printf(" i=%d de1=%.20f de2=%.20f diff\n", i, de1[i], de2[i]); + if (i >= 10 && ++diffshow_cnt < 50) { + printf(" i=%d de1=%.20f de2=%.20f diff\n", i, de1[i], de2[i]); } } } - - printf(" ---- result doulbe : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, same_cnt*100/cnt, notsame_cnt); - - taosMemoryFree(output); + + printf(" ---- result doulbe : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, + same_cnt * 100 / cnt, notsame_cnt); + + taosMemoryFree(output); taosMemoryFree(de2); return 1; } @@ -473,10 +2457,10 @@ int memTestDouble() { // fill float void fillFloat(float* ft, int cnt) { printf("generate float cnt = %d.\n", cnt); - for(int i=0; i < cnt; i++){ - float v = taosRand() + ((float)taosRand())/10000; + for (int i = 0; i < cnt; i++) { + float v = taosRand() + ((float)taosRand()) / 10000; ft[i] = v; - if(i % 100 == 0){ + if (i % 100 == 0) { printf("\n i=%d %f", i, v); } else { printf(" %f", v); @@ -486,91 +2470,87 @@ void fillFloat(float* ft, int cnt) { printf("\nend generate.\n"); } - int memTest() { - // - //float ft1[] = {1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888}; + // float ft1[] = + // {1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888,1.2, 2.4, + // 3.33, 4.444, 5.555, 6.6666, 7.7777, 8.88888}; // - float* ft1 = g_ft1; - const char* input = (const char*) ft1; - int input_len = sizeof(g_ft1); - int cnt = input_len/sizeof(float); + float* ft1 = g_ft1; + const char* input = (const char*)ft1; + int input_len = sizeof(g_ft1); + int cnt = input_len / sizeof(float); printf(" input input_len=%d count=%d \n", input_len, cnt); - - - char* output = (char*) taosMemoryMalloc(input_len); - int output_len = input_len; + char* output = (char*)taosMemoryMalloc(input_len); + int output_len = input_len; - char buff[1024] ={0}; - int buff_len = sizeof(buff); + char buff[1024] = {0}; + int buff_len = sizeof(buff); cost_start(); int ret_len = tsCompressFloatLossy(input, input_len, cnt, output, output_len, ONE_STAGE_COMP, buff, buff_len); - if(ret_len == -1) { + if (ret_len == -1) { printf(" compress error.\n"); return 0; } cost_end(" tscompress"); printf(" compress return len=%d input len=%d\n", ret_len, input_len); - printf(" compress sz rate=%.1f an-rate=%.2f%%\n", (float)input_len/(float)ret_len, 100*(float)ret_len/(float)input_len); - - // + printf(" compress sz rate=%.1f an-rate=%.2f%%\n", (float)input_len / (float)ret_len, + 100 * (float)ret_len / (float)input_len); + + // // decompress // - float* ft2 = (float*)taosMemoryMalloc(input_len); + float* ft2 = (float*)taosMemoryMalloc(input_len); cost_start(); int code = tsDecompressFloatLossy(output, ret_len, cnt, (char*)ft2, input_len, ONE_STAGE_COMP, buff, buff_len); cost_end("tsde-compress"); printf(" de-compress return code=%d \n", code); - // // show // - int same_cnt = 0; - int diffshow_cnt = 0; - for(int i=0; i< cnt; i++){ + int same_cnt = 0; + int diffshow_cnt = 0; + for (int i = 0; i < cnt; i++) { + if (i < 10) printf(" i=%d ft1=%.20f ft2=%.20f same=%d\n", i, ft1[i], ft2[i], ft1[i] == ft2[i]); - if(i < 10) - printf(" i=%d ft1=%.20f ft2=%.20f same=%d\n", i, ft1[i], ft2[i], ft1[i] == ft2[i]); - - if(ft1[i] == ft2[i]) - same_cnt ++; + if (ft1[i] == ft2[i]) + same_cnt++; else { notsame_cnt++; - if(i >= 10 && ++diffshow_cnt < 50){ - printf(" i=%d ft1=%.20f ft2=%.20f diff\n", i, ft1[i], ft2[i]); + if (i >= 10 && ++diffshow_cnt < 50) { + printf(" i=%d ft1=%.20f ft2=%.20f diff\n", i, ft1[i], ft2[i]); } } } - - printf(" ---- result : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, same_cnt*100/cnt, notsame_cnt); - - taosMemoryFree(output); + + printf(" ---- result : same =%d cnt=%d rate:%d%% global not same=%d---- \n", same_cnt, cnt, same_cnt * 100 / cnt, + notsame_cnt); + + taosMemoryFree(output); taosMemoryFree(ft2); return 1; } void* memTestThread(void* lparam) { - //memTest(); + // memTest(); printf(" enter thread ....\n"); - for(int i=0; i<1; i++) - { - memTest(); - printf(" start i=%d .... \n", i); + for (int i = 0; i < 1; i++) { + memTest(); + printf(" start i=%d .... \n", i); } return NULL; } -void test_threadsafe(int thread_count){ +void test_threadsafe(int thread_count) { printf(" test thread safe . thread count=%d \n", thread_count); TdThread handle[1000000]; - int i=0; - for(i=0; i< thread_count; i++){ + int i = 0; + for (i = 0; i < thread_count; i++) { printf(" create thread %d... \n", i); TdThreadAttr attr; taosThreadAttrInit(&attr); @@ -578,32 +2558,28 @@ void test_threadsafe(int thread_count){ taosThreadAttrDestroy(&attr); } - for(i=0; i< thread_count; i++) - { + for (i = 0; i < thread_count; i++) { taosThreadJoin(handle[i], NULL); } - + printf(" test thread safe end. not same count=%d\n", notsame_cnt); - } - void* memTestThreadDouble(void* lparam) { - //memTest(); + // memTest(); printf(" enter thread ....\n"); - for(int i=0; i< 1; i++) - { - memTest(); - printf(" double start i=%d .... \n", i); + for (int i = 0; i < 1; i++) { + memTest(); + printf(" double start i=%d .... \n", i); } return NULL; } -void test_threadsafe_double(int thread_count){ +void test_threadsafe_double(int thread_count) { printf(" test thread safe . thread count=%d \n", thread_count); TdThread handle[1000000]; - int i=0; - for(i=0; i< thread_count; i++){ + int i = 0; + for (i = 0; i < thread_count; i++) { printf(" create thread %d... \n", i); TdThreadAttr attr; taosThreadAttrInit(&attr); @@ -611,29 +2587,26 @@ void test_threadsafe_double(int thread_count){ taosThreadAttrDestroy(&attr); } - for(i=0; i< thread_count; i++) - { + for (i = 0; i < thread_count; i++) { taosThreadJoin(handle[i], NULL); } - + printf("\n ---- double test thread safe end. not same count=%d-----\n", notsame_cnt); - } void unitTestFloat() { - - float ft1 [] = {1.11, 2.22, 3.333}; - int cnt = sizeof(ft1)/sizeof(float); + float ft1[] = {1.11, 2.22, 3.333}; + int cnt = sizeof(ft1) / sizeof(float); float* floats = ft1; - int algorithm = 2; + int algorithm = 2; // compress const char* input = (const char*)floats; - int input_len = cnt * sizeof(float); - int output_len = input_len + 1024; - char* output = (char*) taosMemoryMalloc(output_len); - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(float); + int output_len = input_len + 1024; + char* output = (char*)taosMemoryMalloc(output_len); + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; printf(" ft1 have count=%d \n", cnt); strcpy(output, "abcde"); @@ -642,24 +2615,23 @@ void unitTestFloat() { int ret_len = 0; ret_len = tsCompressFloatLossy(input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - if(ret_len == 0) { + if (ret_len == 0) { printf(" compress error.\n"); - return ; + return; } double use_ms1 = cost_end("compress"); printf(" compress len=%d input len=%d\n", ret_len, input_len); - float rate=100*(float)ret_len/(float)input_len; - printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len/(float)ret_len, rate); - - // + float rate = 100 * (float)ret_len / (float)input_len; + printf(" compress rate=%.1f an-rate=%.4f%%\n", (float)input_len / (float)ret_len, rate); + + // // decompress // - float* ft2 = (float*)taosMemoryMalloc(input_len); + float* ft2 = (float*)taosMemoryMalloc(input_len); cost_start(); int code = 0; code = tsDecompressFloatLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - double use_ms2 = cost_end("Decompress"); printf(" Decompress return length=%d \n", code); @@ -669,175 +2641,164 @@ void unitTestFloat() { printf("\n ------------------ count:%d TD ---------------- \n", cnt); printf(" Compress Rate ......... [%.0f%%] \n", rate); - double speed1 = (cnt*sizeof(float)*1000/1024/1024)/use_ms1; + double speed1 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms1; printf(" Compress Time ......... [%.4fms] speed=%.1f MB/s\n", use_ms1, speed1); - double speed2 = (cnt*sizeof(float)*1000/1024/1024)/use_ms2; + double speed2 = (cnt * sizeof(float) * 1000 / 1024 / 1024) / use_ms2; printf(" Decompress Time........ [%.4fms] speed=%.1f MB/s\n", use_ms2, speed2); printf(" Same Rate ............. [%.0f%%] \n\n", same_rate); - // free taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); } void leakFloat() { - - int cnt = sizeof(g_ft1)/sizeof(float); + int cnt = sizeof(g_ft1) / sizeof(float); float* floats = g_ft1; - int algorithm = 2; + int algorithm = 2; // compress const char* input = (const char*)floats; - int input_len = cnt * sizeof(float); - int output_len = input_len + 1024; - char* output = (char*) taosMemoryMalloc(output_len); - char* buff = (char*) taosMemoryMalloc(input_len); - int buff_len = input_len; + int input_len = cnt * sizeof(float); + int output_len = input_len + 1024; + char* output = (char*)taosMemoryMalloc(output_len); + char* buff = (char*)taosMemoryMalloc(input_len); + int buff_len = input_len; int ret_len = 0; ret_len = tsCompressFloatLossy(input, input_len, cnt, output, output_len, algorithm, buff, buff_len); - if(ret_len == 0) { + if (ret_len == 0) { printf(" compress float error.\n"); taosMemoryFree(buff); - taosMemoryFree(output); - return ; + taosMemoryFree(output); + return; } - - float* ft2 = (float*)taosMemoryMalloc(input_len); + + float* ft2 = (float*)taosMemoryMalloc(input_len); ret_len = tsDecompressFloatLossy(output, ret_len, cnt, (char*)ft2, input_len, algorithm, buff, buff_len); - if(ret_len == 0) { + if (ret_len == 0) { printf(" decompress float error.\n"); } - + taosMemoryFree(ft2); taosMemoryFree(buff); - taosMemoryFree(output); + taosMemoryFree(output); } - -void leakTest(){ - for(int i=0; i< 90000000; i++){ - if(i%10000==0) - printf(" ---------- %d ---------------- \n", i); +void leakTest() { + for (int i = 0; i < 90000000; i++) { + if (i % 10000 == 0) printf(" ---------- %d ---------------- \n", i); leakFloat(); } } #define DB_CNT 500 -void test_same_float(int algo, bool lossy){ - float ori = 123.456789123; - float floats [DB_CNT]; - for(int i=0; i< DB_CNT; i++){ +void test_same_float(int algo, bool lossy) { + float ori = 123.456789123; + float floats[DB_CNT]; + for (int i = 0; i < DB_CNT; i++) { floats[i] = ori; - } + } DoFloat(floats, DB_CNT, algo, lossy); } -void test_same_double(int algo){ - double ori = 3.1415926; +void test_same_double(int algo) { + double ori = 3.1415926; - double doubles [DB_CNT]; - for(int i=0; i< DB_CNT; i++){ + double doubles[DB_CNT]; + for (int i = 0; i < DB_CNT; i++) { doubles[i] = ori; - } + } DoDouble(doubles, DB_CNT, algo); } -#ifdef TD_TSZ - extern char tsLossyColumns[]; extern bool lossyDouble; extern bool lossyFloat; -extern double tsFPrecision; // float column precision -extern double tsDPrecision; // double column precision -extern uint32_t tsMaxRange; // max quantization intervals -extern uint32_t tsCurRange; // current quantization intervals -extern bool tsIfAdtFse; // ADT-FSE algorithom or original huffman algorithom +extern double tsFPrecision; // float column precision +extern double tsDPrecision; // double column precision +extern uint32_t tsMaxRange; // max quantization intervals +extern uint32_t tsCurRange; // current quantization intervals +extern bool tsIfAdtFse; // ADT-FSE algorithom or original huffman algorithom extern char tsCompressor[32]; -#endif // // ----------------- main ---------------------- // -int main(int argc, char *argv[]) { +int main(int argc, char* argv[]) { printf("welcome to use taospack tools v1.6\n"); - //printf(" sizeof(int)=%d\n", (int)sizeof(int)); - //printf(" sizeof(long)=%d\n", (int)sizeof(long)); - //printf(" sizeof(short)=%d\n",(int)sizeof(short)); - - + // printf(" sizeof(int)=%d\n", (int)sizeof(int)); + // printf(" sizeof(long)=%d\n", (int)sizeof(long)); + // printf(" sizeof(short)=%d\n",(int)sizeof(short)); + strcpy(tsLossyColumns, "float|double"); bool lossy = true; - //fPrecision = 1E-5; - //strcpy(Compressor, "GZIP_COMPRESSOR"); + // fPrecision = 1E-5; + // strcpy(Compressor, "GZIP_COMPRESSOR"); tsCompressInit(tsLossyColumns, tsFPrecision, tsDPrecision, tsMaxRange, tsCurRange, (int)tsIfAdtFse, tsCompressor); lossyFloat = lossyDouble = true; - printf(" fPrecision=%.15f\n",tsFPrecision); + printf(" fPrecision=%.15f\n", tsFPrecision); - // - //tsCompressExit(); - //return 1; - //printf(" SZ_SIZE_TYPE=%d", ) + // tsCompressExit(); + // return 1; + // printf(" SZ_SIZE_TYPE=%d", ) - if(argc == 3){ + if (argc == 3) { char algo = 0; // t - if(strcmp(argv[1], "-tone") == 0 || strcmp(argv[1], "-t") == 0 ) { - algo = ONE_STAGE_COMP; - lossyFloat = lossyDouble = true; + if (strcmp(argv[1], "-tone") == 0 || strcmp(argv[1], "-t") == 0) { + algo = ONE_STAGE_COMP; + lossyFloat = lossyDouble = true; } - if(strcmp(argv[1], "-tw") == 0) { - algo = TWO_STAGE_COMP; - lossy = false; - lossyFloat = lossyDouble = false; + if (strcmp(argv[1], "-tw") == 0) { + algo = TWO_STAGE_COMP; + lossy = false; + lossyFloat = lossyDouble = false; } - if(strcmp(argv[1], "-sf") == 0) { - test_threadsafe(atoi(argv[2])); - return 0; + if (strcmp(argv[1], "-sf") == 0) { + test_threadsafe(atoi(argv[2])); + return 0; } - if(strcmp(argv[1], "-sd") == 0) { - test_threadsafe_double(atoi(argv[2])); - return 0; + if (strcmp(argv[1], "-sd") == 0) { + test_threadsafe_double(atoi(argv[2])); + return 0; } - if(strcmp(argv[1], "-samef") == 0) { - test_same_float(atoi(argv[2]), true); - return 0; + if (strcmp(argv[1], "-samef") == 0) { + test_same_float(atoi(argv[2]), true); + return 0; } - if(strcmp(argv[1], "-samed") == 0) { - test_same_double(atoi(argv[2])); - return 0; + if (strcmp(argv[1], "-samed") == 0) { + test_same_double(atoi(argv[2])); + return 0; } - - if(algo == 0){ + + if (algo == 0) { printf(" no param -tone -tw \n"); return 0; } - + bool ret = testFile(argv[2], algo, lossy); printf(" test file %s. \n", ret ? "ok" : "err"); return 1; - } else if( argc == 2) { - if(strcmp(argv[1], "-mem") == 0) { + } else if (argc == 2) { + if (strcmp(argv[1], "-mem") == 0) { memTest(); - } - else if(strcmp(argv[1], "-leak") == 0) { + } else if (strcmp(argv[1], "-leak") == 0) { leakTest(); } - } - else{ + } else { unitTestFloat(); } @@ -846,4 +2807,3 @@ int main(int argc, char *argv[]) { } #endif - diff --git a/utils/tsim/src/simExe.c b/utils/tsim/src/simExe.c index 394b168b08..bea839057e 100644 --- a/utils/tsim/src/simExe.c +++ b/utils/tsim/src/simExe.c @@ -37,15 +37,15 @@ void simLogSql(char *sql, bool useSharp) { char *simParseHostName(char *varName) { static char hostName[140]; -//#ifdef WINDOWS -// hostName[0] = '\"'; -// taosGetFqdn(&hostName[1]); -// int strEndIndex = strlen(hostName); -// hostName[strEndIndex] = '\"'; -// hostName[strEndIndex + 1] = '\0'; -//#else + //#ifdef WINDOWS + // hostName[0] = '\"'; + // taosGetFqdn(&hostName[1]); + // int strEndIndex = strlen(hostName); + // hostName[strEndIndex] = '\"'; + // hostName[strEndIndex + 1] = '\0'; + //#else sprintf(hostName, "%s", "localhost"); -//#endif + //#endif return hostName; } @@ -276,12 +276,16 @@ int32_t simExecuteExpression(SScript *script, char *exp) { if (op1[0] == '=') { strcpy(simGetVariable(script, var1 + 1, var1Len - 1), t3); } else if (op1[0] == '<') { - val0 = atoi(t0); - val1 = atoi(t3); + int64_t val0 = atoll(t0); + int64_t val1 = atoll(t3); + // val0 = atoi(t0); + // val1 = atoi(t3); if (val0 >= val1) result = -1; } else if (op1[0] == '>') { - val0 = atoi(t0); - val1 = atoi(t3); + int64_t val0 = atoll(t0); + int64_t val1 = atoll(t3); + // val0 = atoi(t0); + // val1 = atoi(t3); if (val0 <= val1) result = -1; } } else { @@ -378,16 +382,14 @@ bool simExecuteRunBackCmd(SScript *script, char *option) { return true; } -void simReplaceDirSep (char *buf){ +void simReplaceDirSep(char *buf) { #ifdef WINDOWS - int i=0; - while(buf[i] != '\0') - { - if(buf[i] == '/') - { - buf[i] = '\\'; - } - i++; + int i = 0; + while (buf[i] != '\0') { + if (buf[i] == '/') { + buf[i] = '\\'; + } + i++; } #endif } @@ -505,7 +507,7 @@ bool simExecuteSystemContentCmd(SScript *script, char *option) { } bool simExecuteSetBIModeCmd(SScript *script, char *option) { - char buf[1024]; + char buf[1024]; simVisuallizeOption(script, option, buf); option = buf; diff --git a/utils/tsim/src/simSystem.c b/utils/tsim/src/simSystem.c index dcf5d6ab12..645cf0e6fe 100644 --- a/utils/tsim/src/simSystem.c +++ b/utils/tsim/src/simSystem.c @@ -28,7 +28,7 @@ extern bool simExecSuccess; int32_t simInitCfg() { taosCreateLog("simlog", 1, configDir, NULL, NULL, NULL, NULL, 1); - taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1); + taosInitCfg(configDir, NULL, NULL, NULL, NULL, 1, true); SConfig *pCfg = taosGetCfg(); tstrncpy(simScriptDir, cfgGetItem(pCfg, "scriptDir")->str, PATH_MAX);