Split Bullet/src/LinearMath/btSerializer.cpp into btSerializer64.cpp to make it easier to rebuild serialization structure.
Add several MSVC optimization flags to cmake. Bump up VERSION because serialization format changed Expose btScalar& jointMaxForce, btScalar& jointMaxVelocity to 'getJointInfo2' API, add backwards compatibility to examples\Importers\ImportURDFDemo\URDFImporterInterface::getJointInfo. pybullet: expose 4 more fields to getJointInfo: jointLowerLimit/jointUpperLimit/jointMaxForce/jointMaxVelocity fix performance issue in CMD_ACTUAL_STATE_UPDATE_COMPLETED
This commit is contained in:
@@ -107,6 +107,38 @@ IF(MSVC)
|
|||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
OPTION(USE_MSVC_STRING_POOLING "Use MSVC /GF string pooling option" ON)
|
||||||
|
IF (USE_MSVC_STRING_POOLING)
|
||||||
|
SET(CMAKE_C_FLAGS "/GF ${CMAKE_C_FLAGS}")
|
||||||
|
SET(CMAKE_CXX_FLAGS "/GF ${CMAKE_CXX_FLAGS}")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
OPTION(USE_MSVC_FUNCTION_LEVEL_LINKING "Use MSVC /Gy function level linking option" ON)
|
||||||
|
IF(USE_MSVC_FUNCTION_LEVEL_LINKING)
|
||||||
|
SET(CMAKE_C_FLAGS "/Gy ${CMAKE_C_FLAGS}")
|
||||||
|
SET(CMAKE_CXX_FLAGS "/Gy ${CMAKE_CXX_FLAGS}")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:REF")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /OPT:REF")
|
||||||
|
ENDIF(USE_MSVC_FUNCTION_LEVEL_LINKING)
|
||||||
|
|
||||||
|
OPTION(USE_MSVC_EXEPTIONS "Use MSVC C++ exceptions option" OFF)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OPTION(USE_MSVC_COMDAT_FOLDING "Use MSVC /OPT:ICF COMDAT folding option" ON)
|
||||||
|
|
||||||
|
IF(USE_MSVC_COMDAT_FOLDING)
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:ICF")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /OPT:ICF")
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
|
OPTION(USE_MSVC_DISABLE_RTTI "Use MSVC /GR- disabled RTTI flags option" ON)
|
||||||
|
IF(USE_MSVC_DISABLE_RTTI)
|
||||||
|
STRING(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Disable RTTI
|
||||||
|
SET(CMAKE_C_FLAGS "/GR- ${CMAKE_C_FLAGS}")
|
||||||
|
SET(CMAKE_CXX_FLAGS "/GR- ${CMAKE_CXX_FLAGS}")
|
||||||
|
ENDIF(USE_MSVC_DISABLE_RTTI)
|
||||||
|
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4267")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4267")
|
||||||
ENDIF(MSVC)
|
ENDIF(MSVC)
|
||||||
|
|
||||||
|
|||||||
@@ -1368,6 +1368,10 @@ typedef struct bInvalidHandle {
|
|||||||
double m_jointTorque[6];
|
double m_jointTorque[6];
|
||||||
double m_jointDamping;
|
double m_jointDamping;
|
||||||
double m_jointFriction;
|
double m_jointFriction;
|
||||||
|
double m_jointLowerLimit;
|
||||||
|
double m_jointUpperLimit;
|
||||||
|
double m_jointMaxForce;
|
||||||
|
double m_jointMaxVelocity;
|
||||||
char *m_linkName;
|
char *m_linkName;
|
||||||
char *m_jointName;
|
char *m_jointName;
|
||||||
btCollisionObjectDoubleData *m_linkCollider;
|
btCollisionObjectDoubleData *m_linkCollider;
|
||||||
@@ -1395,6 +1399,10 @@ typedef struct bInvalidHandle {
|
|||||||
int m_posVarCount;
|
int m_posVarCount;
|
||||||
float m_jointDamping;
|
float m_jointDamping;
|
||||||
float m_jointFriction;
|
float m_jointFriction;
|
||||||
|
float m_jointLowerLimit;
|
||||||
|
float m_jointUpperLimit;
|
||||||
|
float m_jointMaxForce;
|
||||||
|
float m_jointMaxVelocity;
|
||||||
char *m_linkName;
|
char *m_linkName;
|
||||||
char *m_jointName;
|
char *m_jointName;
|
||||||
btCollisionObjectFloatData *m_linkCollider;
|
btCollisionObjectFloatData *m_linkCollider;
|
||||||
|
|||||||
@@ -20,12 +20,13 @@
|
|||||||
#include "bDNA.h"
|
#include "bDNA.h"
|
||||||
#include "bBlenderFile.h"
|
#include "bBlenderFile.h"
|
||||||
#include "btBulletFile.h"
|
#include "btBulletFile.h"
|
||||||
|
#include "LinearMath/btSerializer.h"
|
||||||
#include "bCommon.h"
|
#include "bCommon.h"
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
bool isBulletFile = false;
|
bool isBulletFile = true;
|
||||||
|
|
||||||
using namespace bParse;
|
using namespace bParse;
|
||||||
typedef std::string bString;
|
typedef std::string bString;
|
||||||
@@ -216,10 +217,12 @@ int main(int argc,char** argv)
|
|||||||
using namespace bParse;
|
using namespace bParse;
|
||||||
dump = fopen("dump.py", "w");
|
dump = fopen("dump.py", "w");
|
||||||
|
|
||||||
|
|
||||||
if (!dump) return 0;
|
if (!dump) return 0;
|
||||||
fprintf(dump, "%s\n", data);
|
fprintf(dump, "%s\n", data);
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
char* filename = "../../../../data/r2d2_multibody.bullet";
|
char* filename = "../../../../data/r2d2_multibody.bullet";
|
||||||
|
|
||||||
if (argc==2)
|
if (argc==2)
|
||||||
@@ -269,9 +272,12 @@ int main(int argc,char** argv)
|
|||||||
bBlenderFile f(memBuf,len);
|
bBlenderFile f(memBuf,len);
|
||||||
swap = (f.getFlags() & FD_ENDIAN_SWAP)!=0;
|
swap = (f.getFlags() & FD_ENDIAN_SWAP)!=0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
isBulletFile = true;
|
||||||
|
bool swap = false;
|
||||||
|
char* memBuf = sBulletDNAstr;
|
||||||
|
int len = sBulletDNAlen;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
char *blenderData = memBuf;
|
char *blenderData = memBuf;
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
|
import sys
|
||||||
|
sys.path.append(".")
|
||||||
import dump
|
import dump
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
header = """/* Copyright (C) 2011 Erwin Coumans & Charlie C
|
header = """/* Copyright (C) 2011 Erwin Coumans & Charlie C
|
||||||
*
|
*
|
||||||
* This software is provided 'as-is', without any express or implied
|
* This software is provided 'as-is', without any express or implied
|
||||||
|
|||||||
@@ -23,15 +23,29 @@ SET (INC_FILES
|
|||||||
SET(SRC makesdna.cpp)
|
SET(SRC makesdna.cpp)
|
||||||
ADD_EXECUTABLE(makesdna ${SRC} ${INC_FILES})
|
ADD_EXECUTABLE(makesdna ${SRC} ${INC_FILES})
|
||||||
|
|
||||||
|
IF (CMAKE_CL_64)
|
||||||
|
# Output BulletDNA.c
|
||||||
|
ADD_CUSTOM_COMMAND(
|
||||||
|
OUTPUT ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer64.cpp
|
||||||
|
COMMAND ${CMAKE_CFG_INTDIR}/makesdna ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer64.cpp ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/CommonSerialize/
|
||||||
|
DEPENDS makesdna
|
||||||
|
)
|
||||||
|
SET(SRC ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer64.cpp)
|
||||||
|
|
||||||
|
ELSE()
|
||||||
# Output BulletDNA.c
|
# Output BulletDNA.c
|
||||||
ADD_CUSTOM_COMMAND(
|
ADD_CUSTOM_COMMAND(
|
||||||
OUTPUT ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp
|
OUTPUT ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp
|
||||||
COMMAND ${CMAKE_CFG_INTDIR}/makesdna ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/CommonSerialize/
|
COMMAND ${CMAKE_CFG_INTDIR}/makesdna ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/CommonSerialize/
|
||||||
DEPENDS makesdna
|
DEPENDS makesdna
|
||||||
)
|
)
|
||||||
|
SET(SRC ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp)
|
||||||
|
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
# Build bf_dna library
|
# Build bf_dna library
|
||||||
SET(SRC ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp)
|
|
||||||
|
|
||||||
ADD_LIBRARY(BulletDNA ${SRC} ${INC_FILES})
|
ADD_LIBRARY(BulletDNA ${SRC} ${INC_FILES})
|
||||||
|
|
||||||
MESSAGE(STATUS "Configuring makesdna")
|
MESSAGE(STATUS "Configuring makesdna")
|
||||||
|
|||||||
@@ -1398,12 +1398,14 @@ void BulletMJCFImporter::getLinkChildIndices(int urdfLinkIndex, btAlignedObjectA
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const
|
bool BulletMJCFImporter::getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const
|
||||||
{
|
{
|
||||||
jointLowerLimit = 0.f;
|
jointLowerLimit = 0.f;
|
||||||
jointUpperLimit = 0.f;
|
jointUpperLimit = 0.f;
|
||||||
jointDamping = 0.f;
|
jointDamping = 0.f;
|
||||||
jointFriction = 0.f;
|
jointFriction = 0.f;
|
||||||
|
jointMaxForce = 0;
|
||||||
|
jointMaxVelocity = 0;
|
||||||
|
|
||||||
const UrdfLink* link = m_data->getLink(m_data->m_activeModel,urdfLinkIndex);
|
const UrdfLink* link = m_data->getLink(m_data->m_activeModel,urdfLinkIndex);
|
||||||
if (link)
|
if (link)
|
||||||
@@ -1421,6 +1423,8 @@ bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi
|
|||||||
jointUpperLimit = pj->m_upperLimit;
|
jointUpperLimit = pj->m_upperLimit;
|
||||||
jointDamping = pj->m_jointDamping;
|
jointDamping = pj->m_jointDamping;
|
||||||
jointFriction = pj->m_jointFriction;
|
jointFriction = pj->m_jointFriction;
|
||||||
|
jointMaxForce = pj->m_effortLimit;
|
||||||
|
jointMaxVelocity = pj->m_velocityLimit;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else
|
} else
|
||||||
@@ -1433,6 +1437,14 @@ bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const
|
||||||
|
{
|
||||||
|
//backwards compatibility for custom file importers
|
||||||
|
btScalar jointMaxForce = 0;
|
||||||
|
btScalar jointMaxVelocity = 0;
|
||||||
|
return getJointInfo2(urdfLinkIndex, parent2joint, linkTransformInWorld, jointAxisInJointSpace, jointType, jointLowerLimit, jointUpperLimit, jointDamping, jointFriction,jointMaxForce, jointMaxVelocity);
|
||||||
|
}
|
||||||
|
|
||||||
bool BulletMJCFImporter::getRootTransformInWorld(btTransform& rootTransformInWorld) const
|
bool BulletMJCFImporter::getRootTransformInWorld(btTransform& rootTransformInWorld) const
|
||||||
{
|
{
|
||||||
rootTransformInWorld.setIdentity();
|
rootTransformInWorld.setIdentity();
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public:
|
|||||||
virtual void getLinkChildIndices(int urdfLinkIndex, btAlignedObjectArray<int>& childLinkIndices) const;
|
virtual void getLinkChildIndices(int urdfLinkIndex, btAlignedObjectArray<int>& childLinkIndices) const;
|
||||||
|
|
||||||
virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const;
|
virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const;
|
||||||
|
virtual bool getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const;
|
||||||
|
|
||||||
virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const;
|
virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const;
|
||||||
|
|
||||||
|
|||||||
@@ -360,12 +360,14 @@ void BulletURDFImporter::getMassAndInertia(int linkIndex, btScalar& mass,btVect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const
|
bool BulletURDFImporter::getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const
|
||||||
{
|
{
|
||||||
jointLowerLimit = 0.f;
|
jointLowerLimit = 0.f;
|
||||||
jointUpperLimit = 0.f;
|
jointUpperLimit = 0.f;
|
||||||
jointDamping = 0.f;
|
jointDamping = 0.f;
|
||||||
jointFriction = 0.f;
|
jointFriction = 0.f;
|
||||||
|
jointMaxForce = 0.f;
|
||||||
|
jointMaxVelocity = 0.f;
|
||||||
|
|
||||||
UrdfLink* const* linkPtr = m_data->m_urdfParser.getModel().m_links.getAtIndex(urdfLinkIndex);
|
UrdfLink* const* linkPtr = m_data->m_urdfParser.getModel().m_links.getAtIndex(urdfLinkIndex);
|
||||||
btAssert(linkPtr);
|
btAssert(linkPtr);
|
||||||
@@ -384,7 +386,8 @@ bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi
|
|||||||
jointUpperLimit = pj->m_upperLimit;
|
jointUpperLimit = pj->m_upperLimit;
|
||||||
jointDamping = pj->m_jointDamping;
|
jointDamping = pj->m_jointDamping;
|
||||||
jointFriction = pj->m_jointFriction;
|
jointFriction = pj->m_jointFriction;
|
||||||
|
jointMaxForce = pj->m_effortLimit;
|
||||||
|
jointMaxVelocity = pj->m_velocityLimit;
|
||||||
return true;
|
return true;
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
@@ -395,6 +398,14 @@ bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const
|
||||||
|
{
|
||||||
|
btScalar jointMaxForce;
|
||||||
|
btScalar jointMaxVelocity;
|
||||||
|
return getJointInfo2(urdfLinkIndex, parent2joint, linkTransformInWorld, jointAxisInJointSpace, jointType, jointLowerLimit, jointUpperLimit, jointDamping, jointFriction,jointMaxForce,jointMaxVelocity);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BulletURDFImporter::getRootTransformInWorld(btTransform& rootTransformInWorld) const
|
bool BulletURDFImporter::getRootTransformInWorld(btTransform& rootTransformInWorld) const
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public:
|
|||||||
virtual void getMassAndInertia(int linkIndex, btScalar& mass,btVector3& localInertiaDiagonal, btTransform& inertialFrame) const;
|
virtual void getMassAndInertia(int linkIndex, btScalar& mass,btVector3& localInertiaDiagonal, btTransform& inertialFrame) const;
|
||||||
|
|
||||||
virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const;
|
virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const;
|
||||||
|
virtual bool getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const;
|
||||||
|
|
||||||
virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const;
|
virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const;
|
||||||
|
|
||||||
|
|||||||
@@ -232,9 +232,11 @@ void ConvertURDF2BulletInternal(
|
|||||||
btScalar jointUpperLimit;
|
btScalar jointUpperLimit;
|
||||||
btScalar jointDamping;
|
btScalar jointDamping;
|
||||||
btScalar jointFriction;
|
btScalar jointFriction;
|
||||||
|
btScalar jointMaxForce;
|
||||||
|
btScalar jointMaxVelocity;
|
||||||
|
|
||||||
|
|
||||||
bool hasParentJoint = u2b.getJointInfo(urdfLinkIndex, parent2joint, linkTransformInWorldSpace, jointAxisInJointSpace, jointType,jointLowerLimit,jointUpperLimit, jointDamping, jointFriction);
|
bool hasParentJoint = u2b.getJointInfo2(urdfLinkIndex, parent2joint, linkTransformInWorldSpace, jointAxisInJointSpace, jointType,jointLowerLimit,jointUpperLimit, jointDamping, jointFriction,jointMaxForce,jointMaxVelocity);
|
||||||
std::string linkName = u2b.getLinkName(urdfLinkIndex);
|
std::string linkName = u2b.getLinkName(urdfLinkIndex);
|
||||||
|
|
||||||
if (flags & CUF_USE_SDF)
|
if (flags & CUF_USE_SDF)
|
||||||
@@ -376,6 +378,9 @@ void ConvertURDF2BulletInternal(
|
|||||||
disableParentCollision);
|
disableParentCollision);
|
||||||
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointDamping = jointDamping;
|
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointDamping = jointDamping;
|
||||||
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointFriction = jointFriction;
|
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointFriction = jointFriction;
|
||||||
|
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointLowerLimit = jointLowerLimit;
|
||||||
|
cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointUpperLimit = jointUpperLimit;
|
||||||
|
|
||||||
creation.addLinkMapping(urdfLinkIndex,mbLinkIndex);
|
creation.addLinkMapping(urdfLinkIndex,mbLinkIndex);
|
||||||
if (jointType == URDFRevoluteJoint && jointLowerLimit <= jointUpperLimit) {
|
if (jointType == URDFRevoluteJoint && jointLowerLimit <= jointUpperLimit) {
|
||||||
//std::string name = u2b.getLinkName(urdfLinkIndex);
|
//std::string name = u2b.getLinkName(urdfLinkIndex);
|
||||||
|
|||||||
@@ -44,6 +44,14 @@ public:
|
|||||||
|
|
||||||
virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const =0;
|
virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const =0;
|
||||||
|
|
||||||
|
virtual bool getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const
|
||||||
|
{
|
||||||
|
//backwards compatibility for custom file importers
|
||||||
|
jointMaxForce = 0;
|
||||||
|
jointMaxVelocity = 0;
|
||||||
|
return getJointInfo(urdfLinkIndex, parent2joint, linkTransformInWorld, jointAxisInJointSpace, jointType, jointLowerLimit, jointUpperLimit, jointDamping, jointFriction);
|
||||||
|
};
|
||||||
|
|
||||||
virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const =0;
|
virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const =0;
|
||||||
|
|
||||||
///quick hack: need to rethink the API/dependencies of this
|
///quick hack: need to rethink the API/dependencies of this
|
||||||
|
|||||||
@@ -14,6 +14,13 @@ SET(RobotSimulator_SRCS
|
|||||||
b3RobotSimulatorClientAPI.h
|
b3RobotSimulatorClientAPI.h
|
||||||
MinitaurSetup.cpp
|
MinitaurSetup.cpp
|
||||||
MinitaurSetup.h
|
MinitaurSetup.h
|
||||||
|
Bound.cpp
|
||||||
|
GRAPI/BulletMinitaur.cpp
|
||||||
|
GRAPI/BulletMotor.cpp
|
||||||
|
GRAPI/BulletRemoteKeyboard
|
||||||
|
GRAPI/BulletRobot
|
||||||
|
GRAPI/Impl.cpp
|
||||||
|
GRAPI/MinitaurLeg.cpp
|
||||||
../../examples/SharedMemory/IKTrajectoryHelper.cpp
|
../../examples/SharedMemory/IKTrajectoryHelper.cpp
|
||||||
../../examples/SharedMemory/IKTrajectoryHelper.h
|
../../examples/SharedMemory/IKTrajectoryHelper.h
|
||||||
../../examples/ExampleBrowser/InProcessExampleBrowser.cpp
|
../../examples/ExampleBrowser/InProcessExampleBrowser.cpp
|
||||||
|
|||||||
@@ -60,7 +60,11 @@ template <typename T, typename U> void addJointInfoFromMultiBodyData(const T* mb
|
|||||||
|
|
||||||
info.m_jointType = mb->m_links[link].m_jointType;
|
info.m_jointType = mb->m_links[link].m_jointType;
|
||||||
info.m_jointDamping = mb->m_links[link].m_jointDamping;
|
info.m_jointDamping = mb->m_links[link].m_jointDamping;
|
||||||
info.m_jointFriction = mb->m_links[link].m_jointFriction;
|
info.m_jointFriction1 = mb->m_links[link].m_jointFriction;
|
||||||
|
info.m_jointLowerLimit = mb->m_links[link].m_jointLowerLimit;
|
||||||
|
info.m_jointUpperLimit = mb->m_links[link].m_jointUpperLimit;
|
||||||
|
info.m_jointMaxForce = mb->m_links[link].m_jointMaxForce;
|
||||||
|
info.m_jointMaxVelocity = mb->m_links[link].m_jointMaxVelocity;
|
||||||
|
|
||||||
if ((mb->m_links[link].m_jointType == eRevoluteType) ||
|
if ((mb->m_links[link].m_jointType == eRevoluteType) ||
|
||||||
(mb->m_links[link].m_jointType == ePrismaticType)) {
|
(mb->m_links[link].m_jointType == ePrismaticType)) {
|
||||||
|
|||||||
@@ -548,10 +548,24 @@ b3SharedMemoryCommandHandle b3RequestActualStateCommandInit(b3PhysicsClientHandl
|
|||||||
struct SharedMemoryCommand* command = cl->getAvailableSharedMemoryCommand();
|
struct SharedMemoryCommand* command = cl->getAvailableSharedMemoryCommand();
|
||||||
b3Assert(command);
|
b3Assert(command);
|
||||||
command->m_type =CMD_REQUEST_ACTUAL_STATE;
|
command->m_type =CMD_REQUEST_ACTUAL_STATE;
|
||||||
|
command->m_updateFlags = 0;
|
||||||
command->m_requestActualStateInformationCommandArgument.m_bodyUniqueId = bodyUniqueId;
|
command->m_requestActualStateInformationCommandArgument.m_bodyUniqueId = bodyUniqueId;
|
||||||
return (b3SharedMemoryCommandHandle) command;
|
return (b3SharedMemoryCommandHandle) command;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int b3RequestActualStateCommandComputeLinkVelocity(b3SharedMemoryCommandHandle commandHandle, int computeLinkVelocity)
|
||||||
|
{
|
||||||
|
struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle;
|
||||||
|
b3Assert(command);
|
||||||
|
btAssert(command->m_type == CMD_REQUEST_ACTUAL_STATE);
|
||||||
|
if (computeLinkVelocity && command->m_type == CMD_REQUEST_ACTUAL_STATE)
|
||||||
|
{
|
||||||
|
command->m_updateFlags |= ACTUAL_STATE_COMPUTE_LINKVELOCITY;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int b3GetJointState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int jointIndex, b3JointSensorState *state)
|
int b3GetJointState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int jointIndex, b3JointSensorState *state)
|
||||||
{
|
{
|
||||||
const SharedMemoryStatus* status = (const SharedMemoryStatus* ) statusHandle;
|
const SharedMemoryStatus* status = (const SharedMemoryStatus* ) statusHandle;
|
||||||
@@ -605,6 +619,8 @@ int b3GetLinkState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle
|
|||||||
{
|
{
|
||||||
state->m_worldPosition[i] = status->m_sendActualStateArgs.m_linkState[7 * linkIndex + i];
|
state->m_worldPosition[i] = status->m_sendActualStateArgs.m_linkState[7 * linkIndex + i];
|
||||||
state->m_localInertialPosition[i] = status->m_sendActualStateArgs.m_linkLocalInertialFrames[7 * linkIndex + i];
|
state->m_localInertialPosition[i] = status->m_sendActualStateArgs.m_linkLocalInertialFrames[7 * linkIndex + i];
|
||||||
|
state->m_worldLinearVelocity[i] = status->m_sendActualStateArgs.m_linkWorldVelocities[6*linkIndex+i];
|
||||||
|
state->m_worldAngularVelocity[i] = status->m_sendActualStateArgs.m_linkWorldVelocities[6*linkIndex+i+3];
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 4; ++i)
|
for (int i = 0; i < 4; ++i)
|
||||||
{
|
{
|
||||||
@@ -1086,6 +1102,7 @@ int b3SubmitClientCommand(b3PhysicsClientHandle physClient, const b3SharedMemory
|
|||||||
|
|
||||||
b3SharedMemoryStatusHandle b3SubmitClientCommandAndWaitStatus(b3PhysicsClientHandle physClient, const b3SharedMemoryCommandHandle commandHandle)
|
b3SharedMemoryStatusHandle b3SubmitClientCommandAndWaitStatus(b3PhysicsClientHandle physClient, const b3SharedMemoryCommandHandle commandHandle)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("b3SubmitClientCommandAndWaitStatus");
|
||||||
b3Clock clock;
|
b3Clock clock;
|
||||||
double startTime = clock.getTimeInSeconds();
|
double startTime = clock.getTimeInSeconds();
|
||||||
|
|
||||||
@@ -1099,12 +1116,18 @@ b3SharedMemoryStatusHandle b3SubmitClientCommandAndWaitStatus(b3PhysicsClientHan
|
|||||||
|
|
||||||
double timeOutInSeconds = cl->getTimeOut();
|
double timeOutInSeconds = cl->getTimeOut();
|
||||||
|
|
||||||
|
{
|
||||||
|
B3_PROFILE("b3SubmitClientCommand");
|
||||||
b3SubmitClientCommand(physClient, commandHandle);
|
b3SubmitClientCommand(physClient, commandHandle);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
B3_PROFILE("b3ProcessServerStatus");
|
||||||
while (cl->isConnected() && (statusHandle == 0) && (clock.getTimeInSeconds()-startTime < timeOutInSeconds))
|
while (cl->isConnected() && (statusHandle == 0) && (clock.getTimeInSeconds()-startTime < timeOutInSeconds))
|
||||||
{
|
{
|
||||||
|
clock.usleep(0);
|
||||||
statusHandle = b3ProcessServerStatus(physClient);
|
statusHandle = b3ProcessServerStatus(physClient);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return (b3SharedMemoryStatusHandle)statusHandle;
|
return (b3SharedMemoryStatusHandle)statusHandle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -313,6 +313,8 @@ int b3CreateSensorEnable6DofJointForceTorqueSensor(b3SharedMemoryCommandHandle c
|
|||||||
int b3CreateSensorEnableIMUForLink(b3SharedMemoryCommandHandle commandHandle, int linkIndex, int enable);
|
int b3CreateSensorEnableIMUForLink(b3SharedMemoryCommandHandle commandHandle, int linkIndex, int enable);
|
||||||
|
|
||||||
b3SharedMemoryCommandHandle b3RequestActualStateCommandInit(b3PhysicsClientHandle physClient,int bodyUniqueId);
|
b3SharedMemoryCommandHandle b3RequestActualStateCommandInit(b3PhysicsClientHandle physClient,int bodyUniqueId);
|
||||||
|
int b3RequestActualStateCommandComputeLinkVelocity(b3SharedMemoryCommandHandle commandHandle, int computeLinkVelocity);
|
||||||
|
|
||||||
int b3GetJointState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int jointIndex, struct b3JointSensorState *state);
|
int b3GetJointState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int jointIndex, struct b3JointSensorState *state);
|
||||||
int b3GetLinkState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int linkIndex, struct b3LinkState *state);
|
int b3GetLinkState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int linkIndex, struct b3LinkState *state);
|
||||||
|
|
||||||
|
|||||||
@@ -355,7 +355,9 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_data->m_testBlock1->m_numServerCommands >
|
if (m_data->m_testBlock1->m_numServerCommands >
|
||||||
m_data->m_testBlock1->m_numProcessedServerCommands) {
|
m_data->m_testBlock1->m_numProcessedServerCommands)
|
||||||
|
{
|
||||||
|
B3_PROFILE("processServerCMD");
|
||||||
btAssert(m_data->m_testBlock1->m_numServerCommands ==
|
btAssert(m_data->m_testBlock1->m_numServerCommands ==
|
||||||
m_data->m_testBlock1->m_numProcessedServerCommands + 1);
|
m_data->m_testBlock1->m_numProcessedServerCommands + 1);
|
||||||
|
|
||||||
@@ -365,8 +367,13 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
// EnumSharedMemoryServerStatus s = (EnumSharedMemoryServerStatus)serverCmd.m_type;
|
// EnumSharedMemoryServerStatus s = (EnumSharedMemoryServerStatus)serverCmd.m_type;
|
||||||
// consume the command
|
// consume the command
|
||||||
|
|
||||||
switch (serverCmd.m_type) {
|
switch (serverCmd.m_type)
|
||||||
case CMD_CLIENT_COMMAND_COMPLETED: {
|
{
|
||||||
|
|
||||||
|
case CMD_CLIENT_COMMAND_COMPLETED:
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_CLIENT_COMMAND_COMPLETED");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server completed command");
|
b3Printf("Server completed command");
|
||||||
}
|
}
|
||||||
@@ -375,12 +382,16 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
case CMD_MJCF_LOADING_COMPLETED:
|
case CMD_MJCF_LOADING_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_MJCF_LOADING_COMPLETED");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server loading the MJCF OK\n");
|
b3Printf("Server loading the MJCF OK\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_SDF_LOADING_COMPLETED: {
|
case CMD_SDF_LOADING_COMPLETED:
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_SDF_LOADING_COMPLETED");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server loading the SDF OK\n");
|
b3Printf("Server loading the SDF OK\n");
|
||||||
@@ -389,7 +400,9 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CMD_URDF_LOADING_COMPLETED: {
|
case CMD_URDF_LOADING_COMPLETED:
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_URDF_LOADING_COMPLETED");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server loading the URDF OK\n");
|
b3Printf("Server loading the URDF OK\n");
|
||||||
@@ -440,19 +453,28 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_DESIRED_STATE_RECEIVED_COMPLETED: {
|
case CMD_DESIRED_STATE_RECEIVED_COMPLETED:
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_DESIRED_STATE_RECEIVED_COMPLETED");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server received desired state");
|
b3Printf("Server received desired state");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_STEP_FORWARD_SIMULATION_COMPLETED: {
|
case CMD_STEP_FORWARD_SIMULATION_COMPLETED:
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_STEP_FORWARD_SIMULATION_COMPLETED");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server completed step simulation");
|
b3Printf("Server completed step simulation");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_URDF_LOADING_FAILED: {
|
case CMD_URDF_LOADING_FAILED:
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_URDF_LOADING_FAILED");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server failed loading the URDF...\n");
|
b3Printf("Server failed loading the URDF...\n");
|
||||||
}
|
}
|
||||||
@@ -461,24 +483,30 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
case CMD_USER_CONSTRAINT_INFO_COMPLETED:
|
case CMD_USER_CONSTRAINT_INFO_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_USER_CONSTRAINT_INFO_COMPLETED");
|
||||||
|
|
||||||
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
||||||
m_data->m_userConstraintInfoMap.insert(cid,serverCmd.m_userConstraintResultArgs);
|
m_data->m_userConstraintInfoMap.insert(cid,serverCmd.m_userConstraintResultArgs);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_USER_CONSTRAINT_COMPLETED:
|
case CMD_USER_CONSTRAINT_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_USER_CONSTRAINT_COMPLETED");
|
||||||
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
||||||
m_data->m_userConstraintInfoMap.insert(cid,serverCmd.m_userConstraintResultArgs);
|
m_data->m_userConstraintInfoMap.insert(cid,serverCmd.m_userConstraintResultArgs);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_REMOVE_USER_CONSTRAINT_COMPLETED:
|
case CMD_REMOVE_USER_CONSTRAINT_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_REMOVE_USER_CONSTRAINT_COMPLETED");
|
||||||
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
||||||
m_data->m_userConstraintInfoMap.remove(cid);
|
m_data->m_userConstraintInfoMap.remove(cid);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_CHANGE_USER_CONSTRAINT_COMPLETED:
|
case CMD_CHANGE_USER_CONSTRAINT_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CHANGE_USER_CONSTRAINT_COMPLETED");
|
||||||
|
|
||||||
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId;
|
||||||
b3UserConstraint* userConstraintPtr = m_data->m_userConstraintInfoMap[cid];
|
b3UserConstraint* userConstraintPtr = m_data->m_userConstraintInfoMap[cid];
|
||||||
if (userConstraintPtr)
|
if (userConstraintPtr)
|
||||||
@@ -507,26 +535,31 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
case CMD_USER_CONSTRAINT_FAILED:
|
case CMD_USER_CONSTRAINT_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_USER_CONSTRAINT_FAILED");
|
||||||
b3Warning("createConstraint failed");
|
b3Warning("createConstraint failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_REMOVE_USER_CONSTRAINT_FAILED:
|
case CMD_REMOVE_USER_CONSTRAINT_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_REMOVE_USER_CONSTRAINT_FAILED");
|
||||||
b3Warning("removeConstraint failed");
|
b3Warning("removeConstraint failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_CHANGE_USER_CONSTRAINT_FAILED:
|
case CMD_CHANGE_USER_CONSTRAINT_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CHANGE_USER_CONSTRAINT_FAILED");
|
||||||
b3Warning("changeConstraint failed");
|
b3Warning("changeConstraint failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_ACTUAL_STATE_UPDATE_FAILED:
|
case CMD_ACTUAL_STATE_UPDATE_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_ACTUAL_STATE_UPDATE_FAILED");
|
||||||
b3Warning("request actual state failed");
|
b3Warning("request actual state failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_BODY_INFO_COMPLETED:
|
case CMD_BODY_INFO_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_BODY_INFO_COMPLETED");
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Received body info\n");
|
b3Printf("Received body info\n");
|
||||||
}
|
}
|
||||||
@@ -537,12 +570,14 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
case CMD_MJCF_LOADING_FAILED:
|
case CMD_MJCF_LOADING_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_MJCF_LOADING_FAILED");
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server failed loading the MJCF...\n");
|
b3Printf("Server failed loading the MJCF...\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_SDF_LOADING_FAILED: {
|
case CMD_SDF_LOADING_FAILED: {
|
||||||
|
B3_PROFILE("CMD_SDF_LOADING_FAILED");
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server failed loading the SDF...\n");
|
b3Printf("Server failed loading the SDF...\n");
|
||||||
}
|
}
|
||||||
@@ -551,6 +586,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case CMD_BULLET_DATA_STREAM_RECEIVED_COMPLETED: {
|
case CMD_BULLET_DATA_STREAM_RECEIVED_COMPLETED: {
|
||||||
|
B3_PROFILE("CMD_BULLET_DATA_STREAM_RECEIVED_COMPLETED");
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server received bullet data stream OK\n");
|
b3Printf("Server received bullet data stream OK\n");
|
||||||
}
|
}
|
||||||
@@ -558,6 +594,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_BULLET_DATA_STREAM_RECEIVED_FAILED: {
|
case CMD_BULLET_DATA_STREAM_RECEIVED_FAILED: {
|
||||||
|
B3_PROFILE("CMD_BULLET_DATA_STREAM_RECEIVED_FAILED");
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Server failed receiving bullet data stream\n");
|
b3Printf("Server failed receiving bullet data stream\n");
|
||||||
}
|
}
|
||||||
@@ -566,18 +603,17 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
case CMD_ACTUAL_STATE_UPDATE_COMPLETED: {
|
case CMD_ACTUAL_STATE_UPDATE_COMPLETED: {
|
||||||
if (m_data->m_verboseOutput) {
|
B3_PROFILE("CMD_ACTUAL_STATE_UPDATE_COMPLETED");
|
||||||
|
if (m_data->m_verboseOutput)
|
||||||
|
{
|
||||||
b3Printf("Received actual state\n");
|
b3Printf("Received actual state\n");
|
||||||
}
|
|
||||||
SharedMemoryStatus& command = m_data->m_testBlock1->m_serverCommands[0];
|
SharedMemoryStatus& command = m_data->m_testBlock1->m_serverCommands[0];
|
||||||
|
|
||||||
int numQ = command.m_sendActualStateArgs.m_numDegreeOfFreedomQ;
|
int numQ = command.m_sendActualStateArgs.m_numDegreeOfFreedomQ;
|
||||||
int numU = command.m_sendActualStateArgs.m_numDegreeOfFreedomU;
|
int numU = command.m_sendActualStateArgs.m_numDegreeOfFreedomU;
|
||||||
if (m_data->m_verboseOutput) {
|
|
||||||
b3Printf("size Q = %d, size U = %d\n", numQ, numU);
|
b3Printf("size Q = %d, size U = %d\n", numQ, numU);
|
||||||
}
|
|
||||||
char msg[1024];
|
char msg[1024];
|
||||||
|
|
||||||
{
|
{
|
||||||
sprintf(msg, "Q=[");
|
sprintf(msg, "Q=[");
|
||||||
|
|
||||||
@@ -592,11 +628,8 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
sprintf(msg, "%s]", msg);
|
sprintf(msg, "%s]", msg);
|
||||||
}
|
}
|
||||||
if (m_data->m_verboseOutput) {
|
|
||||||
b3Printf(msg);
|
b3Printf(msg);
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
sprintf(msg, "U=[");
|
sprintf(msg, "U=[");
|
||||||
|
|
||||||
for (int i = 0; i < numU; i++) {
|
for (int i = 0; i < numU; i++) {
|
||||||
@@ -609,17 +642,14 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sprintf(msg, "%s]", msg);
|
sprintf(msg, "%s]", msg);
|
||||||
}
|
|
||||||
if (m_data->m_verboseOutput) {
|
|
||||||
b3Printf(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_data->m_verboseOutput) {
|
b3Printf(msg);
|
||||||
b3Printf("\n");
|
b3Printf("\n");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_RESET_SIMULATION_COMPLETED: {
|
case CMD_RESET_SIMULATION_COMPLETED: {
|
||||||
|
B3_PROFILE("CMD_RESET_SIMULATION_COMPLETED");
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("CMD_RESET_SIMULATION_COMPLETED clean data\n");
|
b3Printf("CMD_RESET_SIMULATION_COMPLETED clean data\n");
|
||||||
}
|
}
|
||||||
@@ -628,6 +658,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_DEBUG_LINES_COMPLETED: {
|
case CMD_DEBUG_LINES_COMPLETED: {
|
||||||
|
B3_PROFILE("CMD_DEBUG_LINES_COMPLETED");
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput) {
|
||||||
b3Printf("Success receiving %d debug lines",
|
b3Printf("Success receiving %d debug lines",
|
||||||
serverCmd.m_sendDebugLinesArgs.m_numDebugLines);
|
serverCmd.m_sendDebugLinesArgs.m_numDebugLines);
|
||||||
@@ -671,10 +702,12 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
case CMD_RIGID_BODY_CREATION_COMPLETED:
|
case CMD_RIGID_BODY_CREATION_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_RIGID_BODY_CREATION_COMPLETED");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_DEBUG_LINES_OVERFLOW_FAILED: {
|
case CMD_DEBUG_LINES_OVERFLOW_FAILED: {
|
||||||
|
B3_PROFILE("CMD_DEBUG_LINES_OVERFLOW_FAILED");
|
||||||
b3Warning("Error receiving debug lines");
|
b3Warning("Error receiving debug lines");
|
||||||
m_data->m_debugLinesFrom.resize(0);
|
m_data->m_debugLinesFrom.resize(0);
|
||||||
m_data->m_debugLinesTo.resize(0);
|
m_data->m_debugLinesTo.resize(0);
|
||||||
@@ -685,6 +718,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
case CMD_CAMERA_IMAGE_COMPLETED:
|
case CMD_CAMERA_IMAGE_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CAMERA_IMAGE_COMPLETED");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Camera image OK\n");
|
b3Printf("Camera image OK\n");
|
||||||
@@ -734,6 +768,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
case CMD_CAMERA_IMAGE_FAILED:
|
case CMD_CAMERA_IMAGE_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CAMERA_IMAGE_FAILED");
|
||||||
b3Warning("Camera image FAILED\n");
|
b3Warning("Camera image FAILED\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -768,6 +803,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
case CMD_REQUEST_VR_EVENTS_DATA_COMPLETED:
|
case CMD_REQUEST_VR_EVENTS_DATA_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_REQUEST_VR_EVENTS_DATA_COMPLETED");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Request VR Events completed");
|
b3Printf("Request VR Events completed");
|
||||||
@@ -782,6 +818,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
case CMD_REQUEST_KEYBOARD_EVENTS_DATA_COMPLETED:
|
case CMD_REQUEST_KEYBOARD_EVENTS_DATA_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_REQUEST_KEYBOARD_EVENTS_DATA_COMPLETED");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Request keyboard events completed");
|
b3Printf("Request keyboard events completed");
|
||||||
@@ -796,6 +833,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
case CMD_REQUEST_AABB_OVERLAP_COMPLETED:
|
case CMD_REQUEST_AABB_OVERLAP_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_REQUEST_AABB_OVERLAP_COMPLETED");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Overlapping object request completed");
|
b3Printf("Overlapping object request completed");
|
||||||
@@ -815,6 +853,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
case CMD_CONTACT_POINT_INFORMATION_COMPLETED:
|
case CMD_CONTACT_POINT_INFORMATION_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CONTACT_POINT_INFORMATION_COMPLETED");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Contact Point Information Request OK\n");
|
b3Printf("Contact Point Information Request OK\n");
|
||||||
@@ -835,29 +874,37 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
case CMD_CONTACT_POINT_INFORMATION_FAILED:
|
case CMD_CONTACT_POINT_INFORMATION_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CONTACT_POINT_INFORMATION_FAILED");
|
||||||
b3Warning("Contact Point Information Request failed");
|
b3Warning("Contact Point Information Request failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CMD_SAVE_WORLD_COMPLETED:
|
case CMD_SAVE_WORLD_COMPLETED:
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_SAVE_WORLD_COMPLETED");
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case CMD_SAVE_WORLD_FAILED:
|
case CMD_SAVE_WORLD_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_SAVE_WORLD_FAILED");
|
||||||
b3Warning("Saving world failed");
|
b3Warning("Saving world failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_CALCULATE_INVERSE_KINEMATICS_COMPLETED:
|
case CMD_CALCULATE_INVERSE_KINEMATICS_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CALCULATE_INVERSE_KINEMATICS_COMPLETED");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_CALCULATE_INVERSE_KINEMATICS_FAILED:
|
case CMD_CALCULATE_INVERSE_KINEMATICS_FAILED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CALCULATE_INVERSE_KINEMATICS_FAILED");
|
||||||
b3Warning("Calculate Inverse Kinematics Request failed");
|
b3Warning("Calculate Inverse Kinematics Request failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case CMD_VISUAL_SHAPE_INFO_COMPLETED:
|
case CMD_VISUAL_SHAPE_INFO_COMPLETED:
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_VISUAL_SHAPE_INFO_COMPLETED");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Visual Shape Information Request OK\n");
|
b3Printf("Visual Shape Information Request OK\n");
|
||||||
@@ -945,6 +992,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
m_data->m_testBlock1->m_numProcessedServerCommands++;
|
m_data->m_testBlock1->m_numProcessedServerCommands++;
|
||||||
// we don't have more than 1 command outstanding (in total, either server or client)
|
// we don't have more than 1 command outstanding (in total, either server or client)
|
||||||
btAssert(m_data->m_testBlock1->m_numProcessedServerCommands ==
|
btAssert(m_data->m_testBlock1->m_numProcessedServerCommands ==
|
||||||
@@ -960,6 +1008,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
if ((serverCmd.m_type == CMD_SDF_LOADING_COMPLETED) || (serverCmd.m_type == CMD_MJCF_LOADING_COMPLETED) || (serverCmd.m_type == CMD_SYNC_BODY_INFO_COMPLETED))
|
if ((serverCmd.m_type == CMD_SDF_LOADING_COMPLETED) || (serverCmd.m_type == CMD_MJCF_LOADING_COMPLETED) || (serverCmd.m_type == CMD_SYNC_BODY_INFO_COMPLETED))
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_LOADING_COMPLETED");
|
||||||
int numConstraints = serverCmd.m_sdfLoadedArgs.m_numUserConstraints;
|
int numConstraints = serverCmd.m_sdfLoadedArgs.m_numUserConstraints;
|
||||||
for (int i=0;i<numConstraints;i++)
|
for (int i=0;i<numConstraints;i++)
|
||||||
{
|
{
|
||||||
@@ -990,6 +1039,8 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
if (serverCmd.m_type == CMD_USER_CONSTRAINT_INFO_COMPLETED)
|
if (serverCmd.m_type == CMD_USER_CONSTRAINT_INFO_COMPLETED)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_USER_CONSTRAINT_INFO_COMPLETED");
|
||||||
|
|
||||||
if (m_data->m_constraintIdsRequestInfo.size())
|
if (m_data->m_constraintIdsRequestInfo.size())
|
||||||
{
|
{
|
||||||
int cid = m_data->m_constraintIdsRequestInfo[m_data->m_constraintIdsRequestInfo.size()-1];
|
int cid = m_data->m_constraintIdsRequestInfo[m_data->m_constraintIdsRequestInfo.size()-1];
|
||||||
@@ -1009,6 +1060,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
if (serverCmd.m_type == CMD_BODY_INFO_COMPLETED)
|
if (serverCmd.m_type == CMD_BODY_INFO_COMPLETED)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_BODY_INFO_COMPLETED");
|
||||||
//are there any bodies left to be processed?
|
//are there any bodies left to be processed?
|
||||||
if (m_data->m_bodyIdsRequestInfo.size())
|
if (m_data->m_bodyIdsRequestInfo.size())
|
||||||
{
|
{
|
||||||
@@ -1042,6 +1094,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
if (serverCmd.m_type == CMD_REQUEST_AABB_OVERLAP_COMPLETED)
|
if (serverCmd.m_type == CMD_REQUEST_AABB_OVERLAP_COMPLETED)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_REQUEST_AABB_OVERLAP_COMPLETED2");
|
||||||
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
||||||
if (serverCmd.m_sendOverlappingObjectsArgs.m_numRemainingOverlappingObjects > 0 && serverCmd.m_sendOverlappingObjectsArgs.m_numOverlappingObjectsCopied)
|
if (serverCmd.m_sendOverlappingObjectsArgs.m_numRemainingOverlappingObjects > 0 && serverCmd.m_sendOverlappingObjectsArgs.m_numOverlappingObjectsCopied)
|
||||||
{
|
{
|
||||||
@@ -1054,6 +1107,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
if (serverCmd.m_type == CMD_CONTACT_POINT_INFORMATION_COMPLETED)
|
if (serverCmd.m_type == CMD_CONTACT_POINT_INFORMATION_COMPLETED)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CONTACT_POINT_INFORMATION_COMPLETED2");
|
||||||
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
||||||
if (serverCmd.m_sendContactPointArgs.m_numRemainingContactPoints>0 && serverCmd.m_sendContactPointArgs.m_numContactPointsCopied)
|
if (serverCmd.m_sendContactPointArgs.m_numRemainingContactPoints>0 && serverCmd.m_sendContactPointArgs.m_numContactPointsCopied)
|
||||||
{
|
{
|
||||||
@@ -1068,6 +1122,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
if (serverCmd.m_type == CMD_VISUAL_SHAPE_INFO_COMPLETED)
|
if (serverCmd.m_type == CMD_VISUAL_SHAPE_INFO_COMPLETED)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_VISUAL_SHAPE_INFO_COMPLETED2");
|
||||||
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
||||||
if (serverCmd.m_sendVisualShapeArgs.m_numRemainingVisualShapes >0 && serverCmd.m_sendVisualShapeArgs.m_numVisualShapesCopied)
|
if (serverCmd.m_sendVisualShapeArgs.m_numRemainingVisualShapes >0 && serverCmd.m_sendVisualShapeArgs.m_numVisualShapesCopied)
|
||||||
{
|
{
|
||||||
@@ -1083,6 +1138,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
|
|
||||||
if (serverCmd.m_type == CMD_CAMERA_IMAGE_COMPLETED)
|
if (serverCmd.m_type == CMD_CAMERA_IMAGE_COMPLETED)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("CMD_CAMERA_IMAGE_COMPLETED2");
|
||||||
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
||||||
|
|
||||||
if (serverCmd.m_sendPixelDataArguments.m_numRemainingPixels > 0 && serverCmd.m_sendPixelDataArguments.m_numPixelsCopied)
|
if (serverCmd.m_sendPixelDataArguments.m_numRemainingPixels > 0 && serverCmd.m_sendPixelDataArguments.m_numPixelsCopied)
|
||||||
@@ -1106,7 +1162,9 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((serverCmd.m_type == CMD_DEBUG_LINES_COMPLETED) &&
|
if ((serverCmd.m_type == CMD_DEBUG_LINES_COMPLETED) &&
|
||||||
(serverCmd.m_sendDebugLinesArgs.m_numRemainingDebugLines > 0)) {
|
(serverCmd.m_sendDebugLinesArgs.m_numRemainingDebugLines > 0))
|
||||||
|
{
|
||||||
|
B3_PROFILE("CMD_DEBUG_LINES_COMPLETED2");
|
||||||
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0];
|
||||||
|
|
||||||
// continue requesting debug lines for drawing
|
// continue requesting debug lines for drawing
|
||||||
@@ -1121,7 +1179,10 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() {
|
|||||||
return &m_data->m_lastServerStatus;
|
return &m_data->m_lastServerStatus;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (m_data->m_verboseOutput) {
|
if (m_data->m_verboseOutput)
|
||||||
|
{
|
||||||
|
B3_PROFILE("m_verboseOutput");
|
||||||
|
|
||||||
b3Printf("m_numServerStatus = %d, processed = %d\n",
|
b3Printf("m_numServerStatus = %d, processed = %d\n",
|
||||||
m_data->m_testBlock1->m_numServerCommands,
|
m_data->m_testBlock1->m_numServerCommands,
|
||||||
m_data->m_testBlock1->m_numProcessedServerCommands);
|
m_data->m_testBlock1->m_numProcessedServerCommands);
|
||||||
|
|||||||
@@ -1758,6 +1758,7 @@ int PhysicsServerCommandProcessor::createBodyInfoStream(int bodyUniqueId, char*
|
|||||||
|
|
||||||
bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes )
|
bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes )
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("processCommand");
|
||||||
|
|
||||||
bool hasStatus = false;
|
bool hasStatus = false;
|
||||||
|
|
||||||
@@ -1818,6 +1819,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
#endif
|
#endif
|
||||||
case CMD_STATE_LOGGING:
|
case CMD_STATE_LOGGING:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_STATE_LOGGING");
|
||||||
|
|
||||||
serverStatusOut.m_type = CMD_STATE_LOGGING_FAILED;
|
serverStatusOut.m_type = CMD_STATE_LOGGING_FAILED;
|
||||||
hasStatus = true;
|
hasStatus = true;
|
||||||
|
|
||||||
@@ -1934,6 +1937,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_SET_VR_CAMERA_STATE:
|
case CMD_SET_VR_CAMERA_STATE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_SET_VR_CAMERA_STATE");
|
||||||
|
|
||||||
if (clientCmd.m_updateFlags & VR_CAMERA_ROOT_POSITION)
|
if (clientCmd.m_updateFlags & VR_CAMERA_ROOT_POSITION)
|
||||||
{
|
{
|
||||||
@@ -1960,6 +1964,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_REQUEST_VR_EVENTS_DATA:
|
case CMD_REQUEST_VR_EVENTS_DATA:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_VR_EVENTS_DATA");
|
||||||
|
|
||||||
serverStatusOut.m_sendVREvents.m_numVRControllerEvents = 0;
|
serverStatusOut.m_sendVREvents.m_numVRControllerEvents = 0;
|
||||||
for (int i=0;i<MAX_VR_CONTROLLERS;i++)
|
for (int i=0;i<MAX_VR_CONTROLLERS;i++)
|
||||||
{
|
{
|
||||||
@@ -1981,6 +1987,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_REQUEST_KEYBOARD_EVENTS_DATA:
|
case CMD_REQUEST_KEYBOARD_EVENTS_DATA:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_KEYBOARD_EVENTS_DATA");
|
||||||
|
|
||||||
serverStatusOut.m_sendKeyboardEvents.m_numKeyboardEvents = m_data->m_keyboardEvents.size();
|
serverStatusOut.m_sendKeyboardEvents.m_numKeyboardEvents = m_data->m_keyboardEvents.size();
|
||||||
if (serverStatusOut.m_sendKeyboardEvents.m_numKeyboardEvents>MAX_KEYBOARD_EVENTS)
|
if (serverStatusOut.m_sendKeyboardEvents.m_numKeyboardEvents>MAX_KEYBOARD_EVENTS)
|
||||||
{
|
{
|
||||||
@@ -2016,6 +2024,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_REQUEST_RAY_CAST_INTERSECTIONS:
|
case CMD_REQUEST_RAY_CAST_INTERSECTIONS:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_RAY_CAST_INTERSECTIONS");
|
||||||
|
|
||||||
btVector3 rayFromWorld(clientCmd.m_requestRaycastIntersections.m_rayFromPosition[0],
|
btVector3 rayFromWorld(clientCmd.m_requestRaycastIntersections.m_rayFromPosition[0],
|
||||||
clientCmd.m_requestRaycastIntersections.m_rayFromPosition[1],
|
clientCmd.m_requestRaycastIntersections.m_rayFromPosition[1],
|
||||||
clientCmd.m_requestRaycastIntersections.m_rayFromPosition[2]);
|
clientCmd.m_requestRaycastIntersections.m_rayFromPosition[2]);
|
||||||
@@ -2075,6 +2085,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
};
|
};
|
||||||
case CMD_REQUEST_DEBUG_LINES:
|
case CMD_REQUEST_DEBUG_LINES:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_DEBUG_LINES");
|
||||||
|
|
||||||
int curFlags =m_data->m_remoteDebugDrawer->getDebugMode();
|
int curFlags =m_data->m_remoteDebugDrawer->getDebugMode();
|
||||||
|
|
||||||
int debugMode = clientCmd.m_requestDebugLinesArguments.m_debugMode;//clientCmd.btIDebugDraw::DBG_DrawWireframe|btIDebugDraw::DBG_DrawAabb;
|
int debugMode = clientCmd.m_requestDebugLinesArguments.m_debugMode;//clientCmd.btIDebugDraw::DBG_DrawWireframe|btIDebugDraw::DBG_DrawAabb;
|
||||||
@@ -2144,7 +2156,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_REQUEST_CAMERA_IMAGE_DATA:
|
case CMD_REQUEST_CAMERA_IMAGE_DATA:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_CAMERA_IMAGE_DATA");
|
||||||
int startPixelIndex = clientCmd.m_requestPixelDataArguments.m_startPixelIndex;
|
int startPixelIndex = clientCmd.m_requestPixelDataArguments.m_startPixelIndex;
|
||||||
int width = clientCmd.m_requestPixelDataArguments.m_pixelWidth;
|
int width = clientCmd.m_requestPixelDataArguments.m_pixelWidth;
|
||||||
int height = clientCmd.m_requestPixelDataArguments.m_pixelHeight;
|
int height = clientCmd.m_requestPixelDataArguments.m_pixelHeight;
|
||||||
@@ -2273,6 +2285,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_SYNC_BODY_INFO:
|
case CMD_SYNC_BODY_INFO:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_SYNC_BODY_INFO");
|
||||||
|
|
||||||
int numHandles = m_data->getNumHandles();
|
int numHandles = m_data->getNumHandles();
|
||||||
int actualNumBodies = 0;
|
int actualNumBodies = 0;
|
||||||
for (int i=0;i<numHandles;i++)
|
for (int i=0;i<numHandles;i++)
|
||||||
@@ -2301,6 +2315,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_REQUEST_BODY_INFO:
|
case CMD_REQUEST_BODY_INFO:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_BODY_INFO");
|
||||||
|
|
||||||
const SdfRequestInfoArgs& sdfInfoArgs = clientCmd.m_sdfRequestInfoArgs;
|
const SdfRequestInfoArgs& sdfInfoArgs = clientCmd.m_sdfRequestInfoArgs;
|
||||||
//stream info into memory
|
//stream info into memory
|
||||||
int streamSizeInBytes = createBodyInfoStream(sdfInfoArgs.m_bodyUniqueId, bufferServerToClient, bufferSizeInBytes);
|
int streamSizeInBytes = createBodyInfoStream(sdfInfoArgs.m_bodyUniqueId, bufferServerToClient, bufferSizeInBytes);
|
||||||
@@ -2314,6 +2330,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_SAVE_WORLD:
|
case CMD_SAVE_WORLD:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_SAVE_WORLD");
|
||||||
|
|
||||||
///this is a very rudimentary way to save the state of the world, for scene authoring
|
///this is a very rudimentary way to save the state of the world, for scene authoring
|
||||||
///many todo's, for example save the state of motor controllers etc.
|
///many todo's, for example save the state of motor controllers etc.
|
||||||
|
|
||||||
@@ -2549,6 +2567,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_LOAD_SDF:
|
case CMD_LOAD_SDF:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_LOAD_SDF");
|
||||||
|
|
||||||
const SdfArgs& sdfArgs = clientCmd.m_sdfArguments;
|
const SdfArgs& sdfArgs = clientCmd.m_sdfArguments;
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
@@ -2581,7 +2601,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_LOAD_URDF:
|
case CMD_LOAD_URDF:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_LOAD_URDF");
|
||||||
const UrdfArgs& urdfArgs = clientCmd.m_urdfArguments;
|
const UrdfArgs& urdfArgs = clientCmd.m_urdfArguments;
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
@@ -2686,6 +2706,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_CREATE_SENSOR:
|
case CMD_CREATE_SENSOR:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_CREATE_SENSOR");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Processed CMD_CREATE_SENSOR");
|
b3Printf("Processed CMD_CREATE_SENSOR");
|
||||||
@@ -2754,6 +2776,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_SEND_DESIRED_STATE:
|
case CMD_SEND_DESIRED_STATE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_SEND_DESIRED_STATE");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Processed CMD_SEND_DESIRED_STATE");
|
b3Printf("Processed CMD_SEND_DESIRED_STATE");
|
||||||
@@ -2946,6 +2969,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_REQUEST_ACTUAL_STATE:
|
case CMD_REQUEST_ACTUAL_STATE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_ACTUAL_STATE");
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Sending the actual state (Q,U)");
|
b3Printf("Sending the actual state (Q,U)");
|
||||||
@@ -3019,6 +3043,20 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
serverCmd.m_sendActualStateArgs.m_actualStateQdot[5] = mb->getBaseOmega()[2];
|
serverCmd.m_sendActualStateArgs.m_actualStateQdot[5] = mb->getBaseOmega()[2];
|
||||||
totalDegreeOfFreedomU += 6;//3 linear and 3 angular DOF
|
totalDegreeOfFreedomU += 6;//3 linear and 3 angular DOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
btAlignedObjectArray<btVector3> omega;
|
||||||
|
btAlignedObjectArray<btVector3> linVel;
|
||||||
|
|
||||||
|
bool computeLinkVelocities = ((clientCmd.m_updateFlags & ACTUAL_STATE_COMPUTE_LINKVELOCITY)!=0);
|
||||||
|
if (computeLinkVelocities)
|
||||||
|
{
|
||||||
|
omega.resize(mb->getNumLinks()+1);
|
||||||
|
linVel.resize(mb->getNumLinks()+1);
|
||||||
|
{
|
||||||
|
B3_PROFILE("compTreeLinkVelocities");
|
||||||
|
mb->compTreeLinkVelocities(&omega[0], &linVel[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
for (int l=0;l<mb->getNumLinks();l++)
|
for (int l=0;l<mb->getNumLinks();l++)
|
||||||
{
|
{
|
||||||
for (int d=0;d<mb->getLink(l).m_posVarCount;d++)
|
for (int d=0;d<mb->getLink(l).m_posVarCount;d++)
|
||||||
@@ -3082,6 +3120,24 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
serverCmd.m_sendActualStateArgs.m_linkState[l*7+5] = linkCOMRotation.z();
|
serverCmd.m_sendActualStateArgs.m_linkState[l*7+5] = linkCOMRotation.z();
|
||||||
serverCmd.m_sendActualStateArgs.m_linkState[l*7+6] = linkCOMRotation.w();
|
serverCmd.m_sendActualStateArgs.m_linkState[l*7+6] = linkCOMRotation.w();
|
||||||
|
|
||||||
|
|
||||||
|
btVector3 worldLinVel(0,0,0);
|
||||||
|
btVector3 worldAngVel(0,0,0);
|
||||||
|
|
||||||
|
if (computeLinkVelocities)
|
||||||
|
{
|
||||||
|
const btMatrix3x3& linkRotMat = mb->getLink(l).m_cachedWorldTransform.getBasis();
|
||||||
|
worldLinVel = linkRotMat * linVel[l+1];
|
||||||
|
worldAngVel = linkRotMat * omega[l+1];
|
||||||
|
}
|
||||||
|
|
||||||
|
serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+0] = worldLinVel[0];
|
||||||
|
serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+1] = worldLinVel[1];
|
||||||
|
serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+2] = worldLinVel[2];
|
||||||
|
serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+3] = worldAngVel[0];
|
||||||
|
serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+4] = worldAngVel[1];
|
||||||
|
serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+5] = worldAngVel[2];
|
||||||
|
|
||||||
serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+0] = linkLocalInertialOrigin.getX();
|
serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+0] = linkLocalInertialOrigin.getX();
|
||||||
serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+1] = linkLocalInertialOrigin.getY();
|
serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+1] = linkLocalInertialOrigin.getY();
|
||||||
serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+2] = linkLocalInertialOrigin.getZ();
|
serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+2] = linkLocalInertialOrigin.getZ();
|
||||||
@@ -3152,6 +3208,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_STEP_FORWARD_SIMULATION:
|
case CMD_STEP_FORWARD_SIMULATION:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_STEP_FORWARD_SIMULATION");
|
||||||
|
|
||||||
|
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
@@ -3186,6 +3244,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_REQUEST_INTERNAL_DATA:
|
case CMD_REQUEST_INTERNAL_DATA:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_INTERNAL_DATA");
|
||||||
|
|
||||||
//todo: also check version etc?
|
//todo: also check version etc?
|
||||||
|
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
@@ -3208,6 +3268,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
};
|
};
|
||||||
case CMD_SEND_PHYSICS_SIMULATION_PARAMETERS:
|
case CMD_SEND_PHYSICS_SIMULATION_PARAMETERS:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_SEND_PHYSICS_SIMULATION_PARAMETERS");
|
||||||
|
|
||||||
if (clientCmd.m_updateFlags&SIM_PARAM_UPDATE_DELTA_TIME)
|
if (clientCmd.m_updateFlags&SIM_PARAM_UPDATE_DELTA_TIME)
|
||||||
{
|
{
|
||||||
m_data->m_physicsDeltaTime = clientCmd.m_physSimParamArgs.m_deltaTime;
|
m_data->m_physicsDeltaTime = clientCmd.m_physSimParamArgs.m_deltaTime;
|
||||||
@@ -3283,6 +3345,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
};
|
};
|
||||||
case CMD_INIT_POSE:
|
case CMD_INIT_POSE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_INIT_POSE");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("Server Init Pose not implemented yet");
|
b3Printf("Server Init Pose not implemented yet");
|
||||||
@@ -3431,6 +3495,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_RESET_SIMULATION:
|
case CMD_RESET_SIMULATION:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_RESET_SIMULATION");
|
||||||
|
|
||||||
resetSimulation();
|
resetSimulation();
|
||||||
|
|
||||||
@@ -3442,6 +3507,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
case CMD_CREATE_RIGID_BODY:
|
case CMD_CREATE_RIGID_BODY:
|
||||||
case CMD_CREATE_BOX_COLLISION_SHAPE:
|
case CMD_CREATE_BOX_COLLISION_SHAPE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_CREATE_RIGID_BODY");
|
||||||
|
|
||||||
btVector3 halfExtents(1,1,1);
|
btVector3 halfExtents(1,1,1);
|
||||||
if (clientCmd.m_updateFlags & BOX_SHAPE_HAS_HALF_EXTENTS)
|
if (clientCmd.m_updateFlags & BOX_SHAPE_HAS_HALF_EXTENTS)
|
||||||
{
|
{
|
||||||
@@ -3576,6 +3643,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_PICK_BODY:
|
case CMD_PICK_BODY:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_PICK_BODY");
|
||||||
|
|
||||||
pickBody(btVector3(clientCmd.m_pickBodyArguments.m_rayFromWorld[0],
|
pickBody(btVector3(clientCmd.m_pickBodyArguments.m_rayFromWorld[0],
|
||||||
clientCmd.m_pickBodyArguments.m_rayFromWorld[1],
|
clientCmd.m_pickBodyArguments.m_rayFromWorld[1],
|
||||||
clientCmd.m_pickBodyArguments.m_rayFromWorld[2]),
|
clientCmd.m_pickBodyArguments.m_rayFromWorld[2]),
|
||||||
@@ -3591,6 +3660,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_MOVE_PICKED_BODY:
|
case CMD_MOVE_PICKED_BODY:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_MOVE_PICKED_BODY");
|
||||||
|
|
||||||
movePickedBody(btVector3(clientCmd.m_pickBodyArguments.m_rayFromWorld[0],
|
movePickedBody(btVector3(clientCmd.m_pickBodyArguments.m_rayFromWorld[0],
|
||||||
clientCmd.m_pickBodyArguments.m_rayFromWorld[1],
|
clientCmd.m_pickBodyArguments.m_rayFromWorld[1],
|
||||||
clientCmd.m_pickBodyArguments.m_rayFromWorld[2]),
|
clientCmd.m_pickBodyArguments.m_rayFromWorld[2]),
|
||||||
@@ -3605,6 +3676,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_REMOVE_PICKING_CONSTRAINT_BODY:
|
case CMD_REMOVE_PICKING_CONSTRAINT_BODY:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REMOVE_PICKING_CONSTRAINT_BODY");
|
||||||
removePickingConstraint();
|
removePickingConstraint();
|
||||||
|
|
||||||
SharedMemoryStatus& serverCmd =serverStatusOut;
|
SharedMemoryStatus& serverCmd =serverStatusOut;
|
||||||
@@ -3614,6 +3686,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_REQUEST_AABB_OVERLAP:
|
case CMD_REQUEST_AABB_OVERLAP:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_AABB_OVERLAP");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
int curObjectIndex = clientCmd.m_requestOverlappingObjectsArgs.m_startingOverlappingObjectIndex;
|
int curObjectIndex = clientCmd.m_requestOverlappingObjectsArgs.m_startingOverlappingObjectIndex;
|
||||||
|
|
||||||
@@ -3671,6 +3744,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_CONFIGURE_OPENGL_VISUALIZER:
|
case CMD_CONFIGURE_OPENGL_VISUALIZER:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_CONFIGURE_OPENGL_VISUALIZER");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
serverCmd.m_type =CMD_CLIENT_COMMAND_COMPLETED;
|
serverCmd.m_type =CMD_CLIENT_COMMAND_COMPLETED;
|
||||||
|
|
||||||
@@ -3694,6 +3768,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_REQUEST_CONTACT_POINT_INFORMATION:
|
case CMD_REQUEST_CONTACT_POINT_INFORMATION:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_CONTACT_POINT_INFORMATION");
|
||||||
SharedMemoryStatus& serverCmd =serverStatusOut;
|
SharedMemoryStatus& serverCmd =serverStatusOut;
|
||||||
serverCmd.m_sendContactPointArgs.m_numContactPointsCopied = 0;
|
serverCmd.m_sendContactPointArgs.m_numContactPointsCopied = 0;
|
||||||
|
|
||||||
@@ -4004,6 +4079,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_CALCULATE_INVERSE_DYNAMICS:
|
case CMD_CALCULATE_INVERSE_DYNAMICS:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_CALCULATE_INVERSE_DYNAMICS");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
InternalBodyHandle* bodyHandle = m_data->getHandle(clientCmd.m_calculateInverseDynamicsArguments.m_bodyUniqueId);
|
InternalBodyHandle* bodyHandle = m_data->getHandle(clientCmd.m_calculateInverseDynamicsArguments.m_bodyUniqueId);
|
||||||
if (bodyHandle && bodyHandle->m_multiBody)
|
if (bodyHandle && bodyHandle->m_multiBody)
|
||||||
@@ -4054,6 +4130,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_CALCULATE_JACOBIAN:
|
case CMD_CALCULATE_JACOBIAN:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_CALCULATE_JACOBIAN");
|
||||||
|
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
InternalBodyHandle* bodyHandle = m_data->getHandle(clientCmd.m_calculateJacobianArguments.m_bodyUniqueId);
|
InternalBodyHandle* bodyHandle = m_data->getHandle(clientCmd.m_calculateJacobianArguments.m_bodyUniqueId);
|
||||||
if (bodyHandle && bodyHandle->m_multiBody)
|
if (bodyHandle && bodyHandle->m_multiBody)
|
||||||
@@ -4110,6 +4188,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_APPLY_EXTERNAL_FORCE:
|
case CMD_APPLY_EXTERNAL_FORCE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_APPLY_EXTERNAL_FORCE");
|
||||||
|
|
||||||
if (m_data->m_verboseOutput)
|
if (m_data->m_verboseOutput)
|
||||||
{
|
{
|
||||||
b3Printf("CMD_APPLY_EXTERNAL_FORCE clientCmd = %d\n", clientCmd.m_sequenceNumber);
|
b3Printf("CMD_APPLY_EXTERNAL_FORCE clientCmd = %d\n", clientCmd.m_sequenceNumber);
|
||||||
@@ -4209,6 +4289,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_USER_CONSTRAINT:
|
case CMD_USER_CONSTRAINT:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_USER_CONSTRAINT");
|
||||||
|
|
||||||
SharedMemoryStatus& serverCmd =serverStatusOut;
|
SharedMemoryStatus& serverCmd =serverStatusOut;
|
||||||
serverCmd.m_type = CMD_USER_CONSTRAINT_FAILED;
|
serverCmd.m_type = CMD_USER_CONSTRAINT_FAILED;
|
||||||
hasStatus = true;
|
hasStatus = true;
|
||||||
@@ -4439,6 +4521,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_CALCULATE_INVERSE_KINEMATICS:
|
case CMD_CALCULATE_INVERSE_KINEMATICS:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_CALCULATE_INVERSE_KINEMATICS");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
serverCmd.m_type = CMD_CALCULATE_INVERSE_KINEMATICS_FAILED;
|
serverCmd.m_type = CMD_CALCULATE_INVERSE_KINEMATICS_FAILED;
|
||||||
|
|
||||||
@@ -4608,7 +4691,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_REQUEST_VISUAL_SHAPE_INFO:
|
case CMD_REQUEST_VISUAL_SHAPE_INFO:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_REQUEST_VISUAL_SHAPE_INFO");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
serverCmd.m_type = CMD_VISUAL_SHAPE_INFO_FAILED;
|
serverCmd.m_type = CMD_VISUAL_SHAPE_INFO_FAILED;
|
||||||
//retrieve the visual shape information for a specific body
|
//retrieve the visual shape information for a specific body
|
||||||
@@ -4637,6 +4720,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_UPDATE_VISUAL_SHAPE:
|
case CMD_UPDATE_VISUAL_SHAPE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_UPDATE_VISUAL_SHAPE");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
serverCmd.m_type = CMD_VISUAL_SHAPE_UPDATE_FAILED;
|
serverCmd.m_type = CMD_VISUAL_SHAPE_UPDATE_FAILED;
|
||||||
|
|
||||||
@@ -4649,6 +4733,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
}
|
}
|
||||||
case CMD_LOAD_TEXTURE:
|
case CMD_LOAD_TEXTURE:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_LOAD_TEXTURE");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
serverCmd.m_type = CMD_LOAD_TEXTURE_FAILED;
|
serverCmd.m_type = CMD_LOAD_TEXTURE_FAILED;
|
||||||
|
|
||||||
@@ -4668,7 +4753,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_LOAD_BULLET:
|
case CMD_LOAD_BULLET:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_LOAD_BULLET");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
btBulletWorldImporter* importer = new btBulletWorldImporter(m_data->m_dynamicsWorld);
|
btBulletWorldImporter* importer = new btBulletWorldImporter(m_data->m_dynamicsWorld);
|
||||||
|
|
||||||
@@ -4739,6 +4824,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_SAVE_BULLET:
|
case CMD_SAVE_BULLET:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_SAVE_BULLET");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
|
|
||||||
FILE* f = fopen(clientCmd.m_fileArguments.m_fileName, "wb");
|
FILE* f = fopen(clientCmd.m_fileArguments.m_fileName, "wb");
|
||||||
@@ -4758,6 +4844,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_LOAD_MJCF:
|
case CMD_LOAD_MJCF:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_LOAD_MJCF");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
serverCmd.m_type = CMD_MJCF_LOADING_FAILED;
|
serverCmd.m_type = CMD_MJCF_LOADING_FAILED;
|
||||||
const MjcfArgs& mjcfArgs = clientCmd.m_mjcfArguments;
|
const MjcfArgs& mjcfArgs = clientCmd.m_mjcfArguments;
|
||||||
@@ -4792,6 +4879,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
case CMD_USER_DEBUG_DRAW:
|
case CMD_USER_DEBUG_DRAW:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_USER_DEBUG_DRAW");
|
||||||
SharedMemoryStatus& serverCmd = serverStatusOut;
|
SharedMemoryStatus& serverCmd = serverStatusOut;
|
||||||
serverCmd.m_type = CMD_USER_DEBUG_DRAW_FAILED;
|
serverCmd.m_type = CMD_USER_DEBUG_DRAW_FAILED;
|
||||||
hasStatus = true;
|
hasStatus = true;
|
||||||
@@ -4916,6 +5004,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
|
BT_PROFILE("CMD_UNKNOWN");
|
||||||
b3Error("Unknown command encountered");
|
b3Error("Unknown command encountered");
|
||||||
|
|
||||||
SharedMemoryStatus& serverCmd =serverStatusOut;
|
SharedMemoryStatus& serverCmd =serverStatusOut;
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
#include "../CommonInterfaces/CommonParameterInterface.h"
|
#include "../CommonInterfaces/CommonParameterInterface.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//@todo(erwincoumans) those globals are hacks for a VR demo, move this to Python/pybullet!
|
//@todo(erwincoumans) those globals are hacks for a VR demo, move this to Python/pybullet!
|
||||||
extern btVector3 gLastPickPos;
|
extern btVector3 gLastPickPos;
|
||||||
|
|
||||||
@@ -309,13 +308,12 @@ void MotionThreadFunc(void* userPtr,void* lsMemory)
|
|||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
BT_PROFILE("loop");
|
|
||||||
|
|
||||||
{
|
{
|
||||||
BT_PROFILE("usleep(0)");
|
|
||||||
b3Clock::usleep(0);
|
b3Clock::usleep(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
if (gMaxNumCmdPer1ms>0)
|
if (gMaxNumCmdPer1ms>0)
|
||||||
{
|
{
|
||||||
if (numCmdSinceSleep1ms>gMaxNumCmdPer1ms)
|
if (numCmdSinceSleep1ms>gMaxNumCmdPer1ms)
|
||||||
@@ -331,6 +329,7 @@ void MotionThreadFunc(void* userPtr,void* lsMemory)
|
|||||||
sleepClock.reset();
|
sleepClock.reset();
|
||||||
numCmdSinceSleep1ms = 0;
|
numCmdSinceSleep1ms = 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
unsigned long long int curTime = clock.getTimeMicroseconds();
|
unsigned long long int curTime = clock.getTimeMicroseconds();
|
||||||
unsigned long long int dtMicro = curTime - prevTime;
|
unsigned long long int dtMicro = curTime - prevTime;
|
||||||
@@ -449,7 +448,6 @@ void MotionThreadFunc(void* userPtr,void* lsMemory)
|
|||||||
|
|
||||||
args->m_csGUI->unlock();
|
args->m_csGUI->unlock();
|
||||||
{
|
{
|
||||||
BT_PROFILE("stepSimulationRealTime");
|
|
||||||
args->m_physicsServerPtr->stepSimulationRealTime(deltaTimeInSeconds, args->m_sendVrControllerEvents,numSendVrControllers, keyEvents, args->m_sendKeyEvents.size());
|
args->m_physicsServerPtr->stepSimulationRealTime(deltaTimeInSeconds, args->m_sendVrControllerEvents,numSendVrControllers, keyEvents, args->m_sendKeyEvents.size());
|
||||||
}
|
}
|
||||||
deltaTimeInSeconds = 0;
|
deltaTimeInSeconds = 0;
|
||||||
@@ -487,7 +485,6 @@ void MotionThreadFunc(void* userPtr,void* lsMemory)
|
|||||||
args->m_csGUI->unlock();
|
args->m_csGUI->unlock();
|
||||||
|
|
||||||
{
|
{
|
||||||
BT_PROFILE("processClientCommands");
|
|
||||||
args->m_physicsServerPtr->processClientCommands();
|
args->m_physicsServerPtr->processClientCommands();
|
||||||
numCmdSinceSleep1ms++;
|
numCmdSinceSleep1ms++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -252,6 +252,7 @@ void PhysicsServerSharedMemory::processClientCommands()
|
|||||||
if (m_data->m_testBlocks[block]->m_numClientCommands> m_data->m_testBlocks[block]->m_numProcessedClientCommands)
|
if (m_data->m_testBlocks[block]->m_numClientCommands> m_data->m_testBlocks[block]->m_numProcessedClientCommands)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
BT_PROFILE("processClientCommand");
|
||||||
|
|
||||||
//until we implement a proper ring buffer, we assume always maximum of 1 outstanding commands
|
//until we implement a proper ring buffer, we assume always maximum of 1 outstanding commands
|
||||||
btAssert(m_data->m_testBlocks[block]->m_numClientCommands==m_data->m_testBlocks[block]->m_numProcessedClientCommands+1);
|
btAssert(m_data->m_testBlocks[block]->m_numClientCommands==m_data->m_testBlocks[block]->m_numProcessedClientCommands+1);
|
||||||
|
|||||||
@@ -383,6 +383,7 @@ struct SendActualStateArgs
|
|||||||
double m_jointMotorForce[MAX_DEGREE_OF_FREEDOM];
|
double m_jointMotorForce[MAX_DEGREE_OF_FREEDOM];
|
||||||
|
|
||||||
double m_linkState[7*MAX_NUM_LINKS];
|
double m_linkState[7*MAX_NUM_LINKS];
|
||||||
|
double m_linkWorldVelocities[6*MAX_NUM_LINKS];//linear velocity and angular velocity in world space (x/y/z each).
|
||||||
double m_linkLocalInertialFrames[7*MAX_NUM_LINKS];
|
double m_linkLocalInertialFrames[7*MAX_NUM_LINKS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
#include "PhysicsClientSharedMemory.h"
|
#include "PhysicsClientSharedMemory.h"
|
||||||
#include"../ExampleBrowser/InProcessExampleBrowser.h"
|
#include"../ExampleBrowser/InProcessExampleBrowser.h"
|
||||||
|
|
||||||
|
#include "Bullet3Common/b3Logging.h"
|
||||||
class InProcessPhysicsClientSharedMemoryMainThread : public PhysicsClientSharedMemory
|
class InProcessPhysicsClientSharedMemoryMainThread : public PhysicsClientSharedMemory
|
||||||
{
|
{
|
||||||
btInProcessExampleBrowserMainThreadInternalData* m_data;
|
btInProcessExampleBrowserMainThreadInternalData* m_data;
|
||||||
@@ -38,19 +38,34 @@ public:
|
|||||||
|
|
||||||
// return non-null if there is a status, nullptr otherwise
|
// return non-null if there is a status, nullptr otherwise
|
||||||
virtual const struct SharedMemoryStatus* processServerStatus()
|
virtual const struct SharedMemoryStatus* processServerStatus()
|
||||||
|
{
|
||||||
|
|
||||||
{
|
{
|
||||||
if (btIsExampleBrowserMainThreadTerminated(m_data))
|
if (btIsExampleBrowserMainThreadTerminated(m_data))
|
||||||
{
|
{
|
||||||
PhysicsClientSharedMemory::disconnectSharedMemory();
|
PhysicsClientSharedMemory::disconnectSharedMemory();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
unsigned long int ms = m_clock.getTimeMilliseconds();
|
unsigned long int ms = m_clock.getTimeMilliseconds();
|
||||||
if (ms>20)
|
if (ms>20)
|
||||||
{
|
{
|
||||||
|
B3_PROFILE("m_clock.reset()");
|
||||||
|
|
||||||
m_clock.reset();
|
m_clock.reset();
|
||||||
btUpdateInProcessExampleBrowserMainThread(m_data);
|
btUpdateInProcessExampleBrowserMainThread(m_data);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
b3Clock::usleep(0);
|
b3Clock::usleep(0);
|
||||||
return PhysicsClientSharedMemory::processServerStatus();
|
}
|
||||||
|
const SharedMemoryStatus* stat = 0;
|
||||||
|
|
||||||
|
{
|
||||||
|
stat = PhysicsClientSharedMemory::processServerStatus();
|
||||||
|
}
|
||||||
|
|
||||||
|
return stat;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#define SHARED_MEMORY_KEY 12347
|
#define SHARED_MEMORY_KEY 12347
|
||||||
///increase the SHARED_MEMORY_MAGIC_NUMBER whenever incompatible changes are made in the structures
|
///increase the SHARED_MEMORY_MAGIC_NUMBER whenever incompatible changes are made in the structures
|
||||||
///my convention is year/month/day/rev
|
///my convention is year/month/day/rev
|
||||||
#define SHARED_MEMORY_MAGIC_NUMBER 201703010
|
#define SHARED_MEMORY_MAGIC_NUMBER 201703024
|
||||||
|
|
||||||
enum EnumSharedMemoryClientCommand
|
enum EnumSharedMemoryClientCommand
|
||||||
{
|
{
|
||||||
@@ -174,7 +174,11 @@ struct b3JointInfo
|
|||||||
int m_jointIndex;
|
int m_jointIndex;
|
||||||
int m_flags;
|
int m_flags;
|
||||||
double m_jointDamping;
|
double m_jointDamping;
|
||||||
double m_jointFriction;
|
double m_jointFriction1;
|
||||||
|
double m_jointLowerLimit;
|
||||||
|
double m_jointUpperLimit;
|
||||||
|
double m_jointMaxForce;
|
||||||
|
double m_jointMaxVelocity;
|
||||||
double m_parentFrame[7]; // position and orientation (quaternion)
|
double m_parentFrame[7]; // position and orientation (quaternion)
|
||||||
double m_childFrame[7]; // ^^^
|
double m_childFrame[7]; // ^^^
|
||||||
double m_jointAxis[3]; // joint axis in parent local frame
|
double m_jointAxis[3]; // joint axis in parent local frame
|
||||||
@@ -377,6 +381,11 @@ struct b3VisualShapeInformation
|
|||||||
struct b3VisualShapeData* m_visualShapeData;
|
struct b3VisualShapeData* m_visualShapeData;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum eLinkStateFlags
|
||||||
|
{
|
||||||
|
ACTUAL_STATE_COMPUTE_LINKVELOCITY=1
|
||||||
|
};
|
||||||
|
|
||||||
///b3LinkState provides extra information such as the Cartesian world coordinates
|
///b3LinkState provides extra information such as the Cartesian world coordinates
|
||||||
///center of mass (COM) of the link, relative to the world reference frame.
|
///center of mass (COM) of the link, relative to the world reference frame.
|
||||||
///Orientation is a quaternion x,y,z,w
|
///Orientation is a quaternion x,y,z,w
|
||||||
@@ -394,6 +403,10 @@ struct b3LinkState
|
|||||||
///world position and orientation of the (URDF) link frame
|
///world position and orientation of the (URDF) link frame
|
||||||
double m_worldLinkFramePosition[3];
|
double m_worldLinkFramePosition[3];
|
||||||
double m_worldLinkFrameOrientation[4];
|
double m_worldLinkFrameOrientation[4];
|
||||||
|
|
||||||
|
double m_worldLinearVelocity[3]; //only valid when ACTUAL_STATE_COMPUTE_LINKVELOCITY is set (b3RequestActualStateCommandComputeLinkVelocity)
|
||||||
|
double m_worldAngularVelocity[3]; //only valid when ACTUAL_STATE_COMPUTE_LINKVELOCITY is set (b3RequestActualStateCommandComputeLinkVelocity)
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
//todo: discuss and decide about control mode and combinations
|
//todo: discuss and decide about control mode and combinations
|
||||||
|
|||||||
@@ -2075,7 +2075,7 @@ static PyObject* pybullet_getJointInfo(PyObject* self, PyObject* args, PyObject*
|
|||||||
|
|
||||||
int bodyUniqueId = -1;
|
int bodyUniqueId = -1;
|
||||||
int jointIndex = -1;
|
int jointIndex = -1;
|
||||||
int jointInfoSize = 8; // size of struct b3JointInfo
|
int jointInfoSize = 12; // size of struct b3JointInfo
|
||||||
b3PhysicsClientHandle sm = 0;
|
b3PhysicsClientHandle sm = 0;
|
||||||
int physicsClientId = 0;
|
int physicsClientId = 0;
|
||||||
static char* kwlist[] = {"bodyUniqueId", "jointIndex", "physicsClientId", NULL};
|
static char* kwlist[] = {"bodyUniqueId", "jointIndex", "physicsClientId", NULL};
|
||||||
@@ -2118,7 +2118,16 @@ static PyObject* pybullet_getJointInfo(PyObject* self, PyObject* args, PyObject*
|
|||||||
PyTuple_SetItem(pyListJointInfo, 6,
|
PyTuple_SetItem(pyListJointInfo, 6,
|
||||||
PyFloat_FromDouble(info.m_jointDamping));
|
PyFloat_FromDouble(info.m_jointDamping));
|
||||||
PyTuple_SetItem(pyListJointInfo, 7,
|
PyTuple_SetItem(pyListJointInfo, 7,
|
||||||
PyFloat_FromDouble(info.m_jointFriction));
|
PyFloat_FromDouble(info.m_jointFriction1));
|
||||||
|
PyTuple_SetItem(pyListJointInfo, 8,
|
||||||
|
PyFloat_FromDouble(info.m_jointLowerLimit));
|
||||||
|
PyTuple_SetItem(pyListJointInfo, 9,
|
||||||
|
PyFloat_FromDouble(info.m_jointUpperLimit));
|
||||||
|
PyTuple_SetItem(pyListJointInfo, 10,
|
||||||
|
PyFloat_FromDouble(info.m_jointMaxForce));
|
||||||
|
PyTuple_SetItem(pyListJointInfo, 11,
|
||||||
|
PyFloat_FromDouble(info.m_jointMaxVelocity));
|
||||||
|
|
||||||
return pyListJointInfo;
|
return pyListJointInfo;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2246,17 +2255,21 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject*
|
|||||||
PyObject* pyLinkStateLocalInertialOrientation;
|
PyObject* pyLinkStateLocalInertialOrientation;
|
||||||
PyObject* pyLinkStateWorldLinkFramePosition;
|
PyObject* pyLinkStateWorldLinkFramePosition;
|
||||||
PyObject* pyLinkStateWorldLinkFrameOrientation;
|
PyObject* pyLinkStateWorldLinkFrameOrientation;
|
||||||
|
PyObject* pyLinkStateWorldLinkLinearVelocity;
|
||||||
|
PyObject* pyLinkStateWorldLinkAngularVelocity;
|
||||||
|
|
||||||
struct b3LinkState linkState;
|
struct b3LinkState linkState;
|
||||||
|
|
||||||
int bodyUniqueId = -1;
|
int bodyUniqueId = -1;
|
||||||
int linkIndex = -1;
|
int linkIndex = -1;
|
||||||
|
int computeLinkVelocity = 0;
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
b3PhysicsClientHandle sm = 0;
|
b3PhysicsClientHandle sm = 0;
|
||||||
|
|
||||||
int physicsClientId = 0;
|
int physicsClientId = 0;
|
||||||
static char* kwlist[] = {"bodyUniqueId", "linkIndex", "physicsClientId", NULL};
|
static char* kwlist[] = {"bodyUniqueId", "linkIndex", "computeLinkVelocity", "physicsClientId", NULL};
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, keywds, "ii|i", kwlist, &bodyUniqueId, &linkIndex, &physicsClientId))
|
if (!PyArg_ParseTupleAndKeywords(args, keywds, "ii|ii", kwlist, &bodyUniqueId, &linkIndex,&computeLinkVelocity, &physicsClientId))
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -2286,6 +2299,12 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject*
|
|||||||
|
|
||||||
cmd_handle =
|
cmd_handle =
|
||||||
b3RequestActualStateCommandInit(sm, bodyUniqueId);
|
b3RequestActualStateCommandInit(sm, bodyUniqueId);
|
||||||
|
|
||||||
|
if (computeLinkVelocity)
|
||||||
|
{
|
||||||
|
b3RequestActualStateCommandComputeLinkVelocity(cmd_handle,computeLinkVelocity);
|
||||||
|
}
|
||||||
|
|
||||||
status_handle =
|
status_handle =
|
||||||
b3SubmitClientCommandAndWaitStatus(sm, cmd_handle);
|
b3SubmitClientCommandAndWaitStatus(sm, cmd_handle);
|
||||||
|
|
||||||
@@ -2340,7 +2359,16 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject*
|
|||||||
PyFloat_FromDouble(linkState.m_worldLinkFrameOrientation[i]));
|
PyFloat_FromDouble(linkState.m_worldLinkFrameOrientation[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (computeLinkVelocity)
|
||||||
|
{
|
||||||
|
pyLinkState = PyTuple_New(8);
|
||||||
|
} else
|
||||||
|
{
|
||||||
pyLinkState = PyTuple_New(6);
|
pyLinkState = PyTuple_New(6);
|
||||||
|
}
|
||||||
|
|
||||||
PyTuple_SetItem(pyLinkState, 0, pyLinkStateWorldPosition);
|
PyTuple_SetItem(pyLinkState, 0, pyLinkStateWorldPosition);
|
||||||
PyTuple_SetItem(pyLinkState, 1, pyLinkStateWorldOrientation);
|
PyTuple_SetItem(pyLinkState, 1, pyLinkStateWorldOrientation);
|
||||||
PyTuple_SetItem(pyLinkState, 2, pyLinkStateLocalInertialPosition);
|
PyTuple_SetItem(pyLinkState, 2, pyLinkStateLocalInertialPosition);
|
||||||
@@ -2348,6 +2376,20 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject*
|
|||||||
PyTuple_SetItem(pyLinkState, 4, pyLinkStateWorldLinkFramePosition);
|
PyTuple_SetItem(pyLinkState, 4, pyLinkStateWorldLinkFramePosition);
|
||||||
PyTuple_SetItem(pyLinkState, 5, pyLinkStateWorldLinkFrameOrientation);
|
PyTuple_SetItem(pyLinkState, 5, pyLinkStateWorldLinkFrameOrientation);
|
||||||
|
|
||||||
|
if (computeLinkVelocity)
|
||||||
|
{
|
||||||
|
pyLinkStateWorldLinkLinearVelocity = PyTuple_New(3);
|
||||||
|
pyLinkStateWorldLinkAngularVelocity = PyTuple_New(3);
|
||||||
|
for (i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
PyTuple_SetItem(pyLinkStateWorldLinkLinearVelocity, i,
|
||||||
|
PyFloat_FromDouble(linkState.m_worldLinearVelocity[i]));
|
||||||
|
PyTuple_SetItem(pyLinkStateWorldLinkAngularVelocity, i,
|
||||||
|
PyFloat_FromDouble(linkState.m_worldAngularVelocity[i]));
|
||||||
|
}
|
||||||
|
PyTuple_SetItem(pyLinkState, 6, pyLinkStateWorldLinkLinearVelocity);
|
||||||
|
PyTuple_SetItem(pyLinkState, 7, pyLinkStateWorldLinkAngularVelocity);
|
||||||
|
}
|
||||||
return pyLinkState;
|
return pyLinkState;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1965,6 +1965,10 @@ const char* btMultiBody::serialize(void* dataBuffer, class btSerializer* seriali
|
|||||||
memPtr->m_parentIndex = getLink(i).m_parent;
|
memPtr->m_parentIndex = getLink(i).m_parent;
|
||||||
memPtr->m_jointDamping = getLink(i).m_jointDamping;
|
memPtr->m_jointDamping = getLink(i).m_jointDamping;
|
||||||
memPtr->m_jointFriction = getLink(i).m_jointFriction;
|
memPtr->m_jointFriction = getLink(i).m_jointFriction;
|
||||||
|
memPtr->m_jointLowerLimit = getLink(i).m_jointLowerLimit;
|
||||||
|
memPtr->m_jointUpperLimit = getLink(i).m_jointUpperLimit;
|
||||||
|
memPtr->m_jointMaxForce = getLink(i).m_jointMaxForce;
|
||||||
|
memPtr->m_jointMaxVelocity = getLink(i).m_jointMaxVelocity;
|
||||||
|
|
||||||
getLink(i).m_eVector.serialize(memPtr->m_parentComToThisComOffset);
|
getLink(i).m_eVector.serialize(memPtr->m_parentComToThisComOffset);
|
||||||
getLink(i).m_dVector.serialize(memPtr->m_thisPivotToThisComOffset);
|
getLink(i).m_dVector.serialize(memPtr->m_thisPivotToThisComOffset);
|
||||||
|
|||||||
@@ -728,6 +728,10 @@ struct btMultiBodyLinkDoubleData
|
|||||||
|
|
||||||
double m_jointDamping;
|
double m_jointDamping;
|
||||||
double m_jointFriction;
|
double m_jointFriction;
|
||||||
|
double m_jointLowerLimit;
|
||||||
|
double m_jointUpperLimit;
|
||||||
|
double m_jointMaxForce;
|
||||||
|
double m_jointMaxVelocity;
|
||||||
|
|
||||||
char *m_linkName;
|
char *m_linkName;
|
||||||
char *m_jointName;
|
char *m_jointName;
|
||||||
@@ -757,6 +761,10 @@ struct btMultiBodyLinkFloatData
|
|||||||
int m_posVarCount;
|
int m_posVarCount;
|
||||||
float m_jointDamping;
|
float m_jointDamping;
|
||||||
float m_jointFriction;
|
float m_jointFriction;
|
||||||
|
float m_jointLowerLimit;
|
||||||
|
float m_jointUpperLimit;
|
||||||
|
float m_jointMaxForce;
|
||||||
|
float m_jointMaxVelocity;
|
||||||
|
|
||||||
char *m_linkName;
|
char *m_linkName;
|
||||||
char *m_jointName;
|
char *m_jointName;
|
||||||
|
|||||||
@@ -136,6 +136,10 @@ btVector3 m_appliedConstraintForce; // In WORLD frame
|
|||||||
|
|
||||||
btScalar m_jointDamping; //todo: implement this internally. It is unused for now, it is set by a URDF loader. User can apply manual damping.
|
btScalar m_jointDamping; //todo: implement this internally. It is unused for now, it is set by a URDF loader. User can apply manual damping.
|
||||||
btScalar m_jointFriction; //todo: implement this internally. It is unused for now, it is set by a URDF loader. User can apply manual friction using a velocity motor.
|
btScalar m_jointFriction; //todo: implement this internally. It is unused for now, it is set by a URDF loader. User can apply manual friction using a velocity motor.
|
||||||
|
btScalar m_jointLowerLimit; //todo: implement this internally. It is unused for now, it is set by a URDF loader.
|
||||||
|
btScalar m_jointUpperLimit; //todo: implement this internally. It is unused for now, it is set by a URDF loader.
|
||||||
|
btScalar m_jointMaxForce; //todo: implement this internally. It is unused for now, it is set by a URDF loader.
|
||||||
|
btScalar m_jointMaxVelocity;//todo: implement this internally. It is unused for now, it is set by a URDF loader.
|
||||||
|
|
||||||
// ctor: set some sensible defaults
|
// ctor: set some sensible defaults
|
||||||
btMultibodyLink()
|
btMultibodyLink()
|
||||||
@@ -153,7 +157,11 @@ btVector3 m_appliedConstraintForce; // In WORLD frame
|
|||||||
m_jointName(0),
|
m_jointName(0),
|
||||||
m_userPtr(0),
|
m_userPtr(0),
|
||||||
m_jointDamping(0),
|
m_jointDamping(0),
|
||||||
m_jointFriction(0)
|
m_jointFriction(0),
|
||||||
|
m_jointLowerLimit(0),
|
||||||
|
m_jointUpperLimit(0),
|
||||||
|
m_jointMaxForce(0),
|
||||||
|
m_jointMaxVelocity(0)
|
||||||
{
|
{
|
||||||
|
|
||||||
m_inertiaLocal.setValue(1, 1, 1);
|
m_inertiaLocal.setValue(1, 1, 1);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ SET(LinearMath_SRCS
|
|||||||
btPolarDecomposition.cpp
|
btPolarDecomposition.cpp
|
||||||
btQuickprof.cpp
|
btQuickprof.cpp
|
||||||
btSerializer.cpp
|
btSerializer.cpp
|
||||||
|
btSerializer64.cpp
|
||||||
btThreads.cpp
|
btThreads.cpp
|
||||||
btVector3.cpp
|
btVector3.cpp
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ subject to the following restrictions:
|
|||||||
#include <float.h>
|
#include <float.h>
|
||||||
|
|
||||||
/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/
|
/* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/
|
||||||
#define BT_BULLET_VERSION 286
|
#define BT_BULLET_VERSION 287
|
||||||
|
|
||||||
inline int btGetVersion()
|
inline int btGetVersion()
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -26,7 +26,7 @@ subject to the following restrictions:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
///only the 32bit versions for now
|
|
||||||
extern char sBulletDNAstr[];
|
extern char sBulletDNAstr[];
|
||||||
extern int sBulletDNAlen;
|
extern int sBulletDNAlen;
|
||||||
extern char sBulletDNAstr64[];
|
extern char sBulletDNAstr64[];
|
||||||
@@ -505,7 +505,7 @@ public:
|
|||||||
|
|
||||||
buffer[9] = '2';
|
buffer[9] = '2';
|
||||||
buffer[10] = '8';
|
buffer[10] = '8';
|
||||||
buffer[11] = '6';
|
buffer[11] = '7';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
599
src/LinearMath/btSerializer64.cpp
Normal file
599
src/LinearMath/btSerializer64.cpp
Normal file
@@ -0,0 +1,599 @@
|
|||||||
|
char sBulletDNAstr64[]= {
|
||||||
|
char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(-124),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109),
|
||||||
|
char(95),char(99),char(97),char(112),char(97),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(100),char(97),char(116),char(97),char(0),char(109),char(95),
|
||||||
|
char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(115),char(0),char(109),char(95),char(99),char(111),
|
||||||
|
char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110),
|
||||||
|
char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(115),char(0),char(42),char(102),char(105),char(114),char(115),char(116),char(0),char(42),char(108),char(97),char(115),
|
||||||
|
char(116),char(0),char(109),char(95),char(102),char(108),char(111),char(97),char(116),char(115),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(108),char(91),char(51),
|
||||||
|
char(93),char(0),char(109),char(95),char(98),char(97),char(115),char(105),char(115),char(0),char(109),char(95),char(111),char(114),char(105),char(103),char(105),char(110),char(0),char(109),
|
||||||
|
char(95),char(114),char(111),char(111),char(116),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),
|
||||||
|
char(116),char(114),char(101),char(101),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),
|
||||||
|
char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(91),char(51),char(93),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),
|
||||||
|
char(101),char(100),char(65),char(97),char(98),char(98),char(77),char(97),char(120),char(91),char(51),char(93),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),
|
||||||
|
char(105),char(110),char(79),char(114),char(103),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),char(97),char(120),char(79),char(114),char(103),char(0),char(109),
|
||||||
|
char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),char(80),char(97),
|
||||||
|
char(114),char(116),char(0),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),
|
||||||
|
char(95),char(112),char(97),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),
|
||||||
|
char(120),char(79),char(114),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(98),
|
||||||
|
char(118),char(104),char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(0),char(109),char(95),char(98),char(118),char(104),char(65),char(97),char(98),char(98),char(77),
|
||||||
|
char(97),char(120),char(0),char(109),char(95),char(98),char(118),char(104),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),
|
||||||
|
char(0),char(109),char(95),char(99),char(117),char(114),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(117),char(115),
|
||||||
|
char(101),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(110),char(117),char(109),char(67),
|
||||||
|
char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(76),char(101),char(97),char(102),char(78),char(111),char(100),char(101),char(115),char(0),char(109),
|
||||||
|
char(95),char(110),char(117),char(109),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),
|
||||||
|
char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(0),char(42),char(109),char(95),char(99),char(111),char(110),char(116),char(105),char(103),char(117),char(111),
|
||||||
|
char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),
|
||||||
|
char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),
|
||||||
|
char(114),char(0),char(42),char(109),char(95),char(115),char(117),char(98),char(84),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(80),char(116),char(114),char(0),
|
||||||
|
char(109),char(95),char(116),char(114),char(97),char(118),char(101),char(114),char(115),char(97),char(108),char(77),char(111),char(100),char(101),char(0),char(109),char(95),char(110),char(117),
|
||||||
|
char(109),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(72),char(101),char(97),char(100),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(110),
|
||||||
|
char(97),char(109),char(101),char(0),char(109),char(95),char(115),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(112),char(97),
|
||||||
|
char(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),
|
||||||
|
char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(83),char(99),char(97),
|
||||||
|
char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(108),char(97),char(110),char(101),char(78),char(111),char(114),char(109),char(97),char(108),char(0),char(109),
|
||||||
|
char(95),char(112),char(108),char(97),char(110),char(101),char(67),char(111),char(110),char(115),char(116),char(97),char(110),char(116),char(0),char(109),char(95),char(105),char(109),char(112),
|
||||||
|
char(108),char(105),char(99),char(105),char(116),char(83),char(104),char(97),char(112),char(101),char(68),char(105),char(109),char(101),char(110),char(115),char(105),char(111),char(110),char(115),
|
||||||
|
char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(109),
|
||||||
|
char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(111),char(115),char(0),char(109),char(95),char(114),char(97),char(100),
|
||||||
|
char(105),char(117),char(115),char(0),char(109),char(95),char(99),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108),
|
||||||
|
char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(42),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(80),char(111),
|
||||||
|
char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),char(108),char(111),char(99),
|
||||||
|
char(97),char(108),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(83),char(105),char(122),char(101),char(0),
|
||||||
|
char(109),char(95),char(118),char(97),char(108),char(117),char(101),char(0),char(109),char(95),char(112),char(97),char(100),char(91),char(50),char(93),char(0),char(109),char(95),char(118),
|
||||||
|
char(97),char(108),char(117),char(101),char(115),char(91),char(51),char(93),char(0),char(109),char(95),char(112),char(97),char(100),char(0),char(42),char(109),char(95),char(118),char(101),
|
||||||
|
char(114),char(116),char(105),char(99),char(101),char(115),char(51),char(102),char(0),char(42),char(109),char(95),char(118),char(101),char(114),char(116),char(105),char(99),char(101),char(115),
|
||||||
|
char(51),char(100),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(51),char(50),char(0),char(42),char(109),char(95),char(51),
|
||||||
|
char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(42),char(109),char(95),char(51),char(105),char(110),char(100),char(105),char(99),char(101),
|
||||||
|
char(115),char(56),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(109),char(95),char(110),char(117),
|
||||||
|
char(109),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(101),char(114),char(116),
|
||||||
|
char(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(115),char(80),char(116),char(114),
|
||||||
|
char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(101),char(115),char(104),
|
||||||
|
char(80),char(97),char(114),char(116),char(115),char(0),char(109),char(95),char(109),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),
|
||||||
|
char(101),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(70),char(108),char(111),char(97),char(116),char(66),
|
||||||
|
char(118),char(104),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(68),char(111),char(117),char(98),char(108),
|
||||||
|
char(101),char(66),char(118),char(104),char(0),char(42),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),
|
||||||
|
char(77),char(97),char(112),char(0),char(109),char(95),char(112),char(97),char(100),char(51),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(114),char(105),char(109),
|
||||||
|
char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(116),char(114),char(97),char(110),char(115),
|
||||||
|
char(102),char(111),char(114),char(109),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(0),char(109),
|
||||||
|
char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104),
|
||||||
|
char(105),char(108),char(100),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),
|
||||||
|
char(97),char(112),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(104),char(105),char(108),char(100),char(83),char(104),char(97),
|
||||||
|
char(112),char(101),char(115),char(0),char(109),char(95),char(117),char(112),char(65),char(120),char(105),char(115),char(0),char(109),char(95),char(117),char(112),char(73),char(110),char(100),
|
||||||
|
char(101),char(120),char(0),char(109),char(95),char(102),char(108),char(97),char(103),char(115),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(48),char(86),
|
||||||
|
char(49),char(65),char(110),char(103),char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(49),char(86),char(50),char(65),char(110),char(103),
|
||||||
|
char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(50),char(86),char(48),char(65),char(110),char(103),char(108),char(101),char(0),char(42),
|
||||||
|
char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(110),char(101),
|
||||||
|
char(120),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(118),char(97),char(108),char(117),char(101),char(65),char(114),char(114),char(97),char(121),char(80),
|
||||||
|
char(116),char(114),char(0),char(42),char(109),char(95),char(107),char(101),char(121),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),
|
||||||
|
char(99),char(111),char(110),char(118),char(101),char(120),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),char(109),char(95),char(112),char(108),char(97),char(110),
|
||||||
|
char(97),char(114),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),char(109),char(95),char(101),char(113),char(117),char(97),char(108),char(86),char(101),char(114),
|
||||||
|
char(116),char(101),char(120),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(68),
|
||||||
|
char(105),char(115),char(116),char(97),char(110),char(99),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(122),
|
||||||
|
char(101),char(114),char(111),char(65),char(114),char(101),char(97),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),
|
||||||
|
char(101),char(120),char(116),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(83),
|
||||||
|
char(105),char(122),char(101),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(97),char(108),char(117),char(101),char(115),char(0),char(109),char(95),char(110),char(117),
|
||||||
|
char(109),char(75),char(101),char(121),char(115),char(0),char(109),char(95),char(103),char(105),char(109),char(112),char(97),char(99),char(116),char(83),char(117),char(98),char(84),char(121),
|
||||||
|
char(112),char(101),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),
|
||||||
|
char(70),char(108),char(111),char(97),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100),
|
||||||
|
char(80),char(111),char(105),char(110),char(116),char(115),char(68),char(111),char(117),char(98),char(108),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),
|
||||||
|
char(109),char(85),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(112),char(97),
|
||||||
|
char(100),char(100),char(105),char(110),char(103),char(51),char(91),char(52),char(93),char(0),char(42),char(109),char(95),char(98),char(114),char(111),char(97),char(100),char(112),char(104),
|
||||||
|
char(97),char(115),char(101),char(72),char(97),char(110),char(100),char(108),char(101),char(0),char(42),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),
|
||||||
|
char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(42),char(109),char(95),char(114),char(111),char(111),char(116),char(67),char(111),char(108),char(108),char(105),
|
||||||
|
char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(109),char(95),char(119),char(111),char(114),char(108),char(100),char(84),char(114),char(97),
|
||||||
|
char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),
|
||||||
|
char(111),char(110),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),
|
||||||
|
char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),char(111),char(110),char(76),char(105),char(110),char(101),char(97),char(114),char(86),char(101),
|
||||||
|
char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),
|
||||||
|
char(111),char(110),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),
|
||||||
|
char(97),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),
|
||||||
|
char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(99),char(116),char(80),char(114),char(111),char(99),char(101),char(115),char(115),char(105),char(110),char(103),char(84),
|
||||||
|
char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(100),char(101),char(97),char(99),char(116),char(105),char(118),char(97),char(116),
|
||||||
|
char(105),char(111),char(110),char(84),char(105),char(109),char(101),char(0),char(109),char(95),char(102),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),
|
||||||
|
char(95),char(114),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),
|
||||||
|
char(111),char(110),char(116),char(97),char(99),char(116),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(99),char(111),char(110),char(116),
|
||||||
|
char(97),char(99),char(116),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),
|
||||||
|
char(116),char(117),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(104),char(105),char(116),char(70),char(114),char(97),char(99),char(116),char(105),char(111),char(110),
|
||||||
|
char(0),char(109),char(95),char(99),char(99),char(100),char(83),char(119),char(101),char(112),char(116),char(83),char(112),char(104),char(101),char(114),char(101),char(82),char(97),char(100),
|
||||||
|
char(105),char(117),char(115),char(0),char(109),char(95),char(99),char(99),char(100),char(77),char(111),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),
|
||||||
|
char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(104),char(97),char(115),char(65),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),
|
||||||
|
char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),
|
||||||
|
char(110),char(70),char(108),char(97),char(103),char(115),char(0),char(109),char(95),char(105),char(115),char(108),char(97),char(110),char(100),char(84),char(97),char(103),char(49),char(0),
|
||||||
|
char(109),char(95),char(99),char(111),char(109),char(112),char(97),char(110),char(105),char(111),char(110),char(73),char(100),char(0),char(109),char(95),char(97),char(99),char(116),char(105),
|
||||||
|
char(118),char(97),char(116),char(105),char(111),char(110),char(83),char(116),char(97),char(116),char(101),char(49),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),
|
||||||
|
char(110),char(97),char(108),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104),char(101),char(99),char(107),char(67),char(111),char(108),char(108),char(105),
|
||||||
|
char(100),char(101),char(87),char(105),char(116),char(104),char(0),char(109),char(95),char(116),char(97),char(117),char(0),char(109),char(95),char(100),char(97),char(109),char(112),char(105),
|
||||||
|
char(110),char(103),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(116),char(101),char(112),char(0),char(109),char(95),char(109),char(97),char(120),char(69),
|
||||||
|
char(114),char(114),char(111),char(114),char(82),char(101),char(100),char(117),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(115),char(111),char(114),char(0),
|
||||||
|
char(109),char(95),char(101),char(114),char(112),char(0),char(109),char(95),char(101),char(114),char(112),char(50),char(0),char(109),char(95),char(103),char(108),char(111),char(98),char(97),
|
||||||
|
char(108),char(67),char(102),char(109),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(80),
|
||||||
|
char(101),char(110),char(101),char(116),char(114),char(97),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),
|
||||||
|
char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(84),char(117),char(114),char(110),char(69),char(114),
|
||||||
|
char(112),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(111),char(112),char(0),char(109),char(95),char(119),char(97),char(114),
|
||||||
|
char(109),char(115),char(116),char(97),char(114),char(116),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(109),char(97),
|
||||||
|
char(120),char(71),char(121),char(114),char(111),char(115),char(99),char(111),char(112),char(105),char(99),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(115),
|
||||||
|
char(105),char(110),char(103),char(108),char(101),char(65),char(120),char(105),char(115),char(82),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99),
|
||||||
|
char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),char(117),char(109),char(73),
|
||||||
|
char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(77),char(111),
|
||||||
|
char(100),char(101),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),char(110),char(103),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(82),
|
||||||
|
char(101),char(115),char(116),char(105),char(116),char(117),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),
|
||||||
|
char(109),char(95),char(109),char(105),char(110),char(105),char(109),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(66),char(97),char(116),char(99),char(104),
|
||||||
|
char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),
|
||||||
|
char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(0),char(109),char(95),char(103),char(114),char(97),char(118),char(105),
|
||||||
|
char(116),char(121),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),
|
||||||
|
char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(84),char(101),char(110),
|
||||||
|
char(115),char(111),char(114),char(87),char(111),char(114),char(108),char(100),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(86),char(101),char(108),
|
||||||
|
char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),char(99),
|
||||||
|
char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0),
|
||||||
|
char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(103),char(114),char(97),
|
||||||
|
char(118),char(105),char(116),char(121),char(95),char(97),char(99),char(99),char(101),char(108),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95),
|
||||||
|
char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(76),char(111),char(99),char(97),char(108),char(0),char(109),char(95),char(116),char(111),
|
||||||
|
char(116),char(97),char(108),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(116),char(111),char(116),char(97),char(108),char(84),char(111),char(114),char(113),
|
||||||
|
char(117),char(101),char(0),char(109),char(95),char(105),char(110),char(118),char(101),char(114),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(109),char(95),char(108),
|
||||||
|
char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),
|
||||||
|
char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110),
|
||||||
|
char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(97),char(100),
|
||||||
|
char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(76),char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),
|
||||||
|
char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105),
|
||||||
|
char(116),char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),
|
||||||
|
char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116),
|
||||||
|
char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70),
|
||||||
|
char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(101),char(101),char(112),char(105),
|
||||||
|
char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),
|
||||||
|
char(114),char(83),char(108),char(101),char(101),char(112),char(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),
|
||||||
|
char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),
|
||||||
|
char(95),char(110),char(117),char(109),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(82),char(111),char(119),char(115),char(0),char(110),
|
||||||
|
char(117),char(98),char(0),char(42),char(109),char(95),char(114),char(98),char(65),char(0),char(42),char(109),char(95),char(114),char(98),char(66),char(0),char(109),char(95),char(111),
|
||||||
|
char(98),char(106),char(101),char(99),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110),char(115),
|
||||||
|
char(116),char(114),char(97),char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110),
|
||||||
|
char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(100),char(0),char(109),char(95),char(110),char(101),char(101),char(100),char(115),char(70),char(101),char(101),
|
||||||
|
char(100),char(98),char(97),char(99),char(107),char(0),char(109),char(95),char(97),char(112),char(112),char(108),char(105),char(101),char(100),char(73),char(109),char(112),char(117),char(108),
|
||||||
|
char(115),char(101),char(0),char(109),char(95),char(100),char(98),char(103),char(68),char(114),char(97),char(119),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(100),
|
||||||
|
char(105),char(115),char(97),char(98),char(108),char(101),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(115),char(66),char(101),char(116),char(119),
|
||||||
|
char(101),char(101),char(110),char(76),char(105),char(110),char(107),char(101),char(100),char(66),char(111),char(100),char(105),char(101),char(115),char(0),char(109),char(95),char(111),char(118),
|
||||||
|
char(101),char(114),char(114),char(105),char(100),char(101),char(78),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(116),char(101),char(114),char(97),
|
||||||
|
char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(98),char(114),char(101),char(97),char(107),char(105),char(110),char(103),char(73),char(109),char(112),char(117),
|
||||||
|
char(108),char(115),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(105),char(115),char(69),char(110),char(97),
|
||||||
|
char(98),char(108),char(101),char(100),char(0),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(121),
|
||||||
|
char(112),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(112),
|
||||||
|
char(105),char(118),char(111),char(116),char(73),char(110),char(65),char(0),char(109),char(95),char(112),char(105),char(118),char(111),char(116),char(73),char(110),char(66),char(0),char(109),
|
||||||
|
char(95),char(114),char(98),char(65),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(114),char(98),char(66),char(70),char(114),char(97),char(109),char(101),
|
||||||
|
char(0),char(109),char(95),char(117),char(115),char(101),char(82),char(101),char(102),char(101),char(114),char(101),char(110),char(99),char(101),char(70),char(114),char(97),char(109),char(101),
|
||||||
|
char(65),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(79),char(110),char(108),char(121),char(0),char(109),char(95),char(101),char(110),
|
||||||
|
char(97),char(98),char(108),char(101),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(0),char(109),char(95),char(109),
|
||||||
|
char(111),char(116),char(111),char(114),char(84),char(97),char(114),char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),
|
||||||
|
char(95),char(109),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(108),
|
||||||
|
char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(117),char(112),char(112),char(101),char(114),char(76),char(105),char(109),
|
||||||
|
char(105),char(116),char(0),char(109),char(95),char(108),char(105),char(109),char(105),char(116),char(83),char(111),char(102),char(116),char(110),char(101),char(115),char(115),char(0),char(109),
|
||||||
|
char(95),char(98),char(105),char(97),char(115),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(114),char(101),char(108),char(97),char(120),char(97),
|
||||||
|
char(116),char(105),char(111),char(110),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),
|
||||||
|
char(49),char(91),char(52),char(93),char(0),char(109),char(95),char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(49),char(0),char(109),char(95),
|
||||||
|
char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(50),char(0),char(109),char(95),char(116),char(119),char(105),char(115),char(116),char(83),char(112),
|
||||||
|
char(97),char(110),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),
|
||||||
|
char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),
|
||||||
|
char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116),
|
||||||
|
char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),
|
||||||
|
char(0),char(109),char(95),char(117),char(115),char(101),char(76),char(105),char(110),char(101),char(97),char(114),char(82),char(101),char(102),char(101),char(114),char(101),char(110),char(99),
|
||||||
|
char(101),char(70),char(114),char(97),char(109),char(101),char(65),char(0),char(109),char(95),char(117),char(115),char(101),char(79),char(102),char(102),char(115),char(101),char(116),char(70),
|
||||||
|
char(111),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95),
|
||||||
|
char(54),char(100),char(111),char(102),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(69),char(110),char(97),
|
||||||
|
char(98),char(108),char(101),char(100),char(91),char(54),char(93),char(0),char(109),char(95),char(101),char(113),char(117),char(105),char(108),char(105),char(98),char(114),char(105),char(117),
|
||||||
|
char(109),char(80),char(111),char(105),char(110),char(116),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(83),char(116),
|
||||||
|
char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(68),
|
||||||
|
char(97),char(109),char(112),char(105),char(110),char(103),char(91),char(54),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(66),char(111),
|
||||||
|
char(117),char(110),char(99),char(101),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(111),char(112),char(69),char(82),char(80),
|
||||||
|
char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(111),char(112),char(67),char(70),char(77),char(0),char(109),char(95),char(108),
|
||||||
|
char(105),char(110),char(101),char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(69),char(82),char(80),char(0),char(109),char(95),char(108),char(105),char(110),char(101),
|
||||||
|
char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(67),char(70),char(77),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(84),
|
||||||
|
char(97),char(114),char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(108),char(105),char(110),char(101),
|
||||||
|
char(97),char(114),char(77),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(108),char(105),
|
||||||
|
char(110),char(101),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(84),char(97),char(114),char(103),char(101),char(116),char(0),char(109),char(95),char(108),char(105),
|
||||||
|
char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),
|
||||||
|
char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),
|
||||||
|
char(103),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(69),char(113),char(117),char(105),char(108),char(105),char(98),char(114),char(105),char(117),
|
||||||
|
char(109),char(80),char(111),char(105),char(110),char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(69),char(110),char(97),char(98),char(108),
|
||||||
|
char(101),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(101),
|
||||||
|
char(114),char(118),char(111),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),
|
||||||
|
char(69),char(110),char(97),char(98),char(108),char(101),char(83),char(112),char(114),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),
|
||||||
|
char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(76),
|
||||||
|
char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(112),
|
||||||
|
char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(76),char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),
|
||||||
|
char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(66),char(111),char(117),char(110),char(99),char(101),char(0),char(109),char(95),
|
||||||
|
char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(116),char(111),char(112),char(69),char(82),char(80),char(0),char(109),char(95),char(97),char(110),char(103),
|
||||||
|
char(117),char(108),char(97),char(114),char(83),char(116),char(111),char(112),char(67),char(70),char(77),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),
|
||||||
|
char(114),char(77),char(111),char(116),char(111),char(114),char(69),char(82),char(80),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(77),
|
||||||
|
char(111),char(116),char(111),char(114),char(67),char(70),char(77),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(84),char(97),char(114),
|
||||||
|
char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),
|
||||||
|
char(114),char(77),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(97),char(110),char(103),
|
||||||
|
char(117),char(108),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(84),char(97),char(114),char(103),char(101),char(116),char(0),char(109),char(95),char(97),char(110),
|
||||||
|
char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),
|
||||||
|
char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),
|
||||||
|
char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(69),char(113),char(117),char(105),char(108),char(105),char(98),
|
||||||
|
char(114),char(105),char(117),char(109),char(80),char(111),char(105),char(110),char(116),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(69),
|
||||||
|
char(110),char(97),char(98),char(108),char(101),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117),
|
||||||
|
char(108),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(97),
|
||||||
|
char(110),char(103),char(117),char(108),char(97),char(114),char(69),char(110),char(97),char(98),char(108),char(101),char(83),char(112),char(114),char(105),char(110),char(103),char(91),char(52),
|
||||||
|
char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),
|
||||||
|
char(102),char(102),char(110),char(101),char(115),char(115),char(76),char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(97),
|
||||||
|
char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(76),
|
||||||
|
char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(114),char(111),char(116),char(97),char(116),char(101),char(79),char(114),
|
||||||
|
char(100),char(101),char(114),char(0),char(109),char(95),char(97),char(120),char(105),char(115),char(73),char(110),char(65),char(0),char(109),char(95),char(97),char(120),char(105),char(115),
|
||||||
|
char(73),char(110),char(66),char(0),char(109),char(95),char(114),char(97),char(116),char(105),char(111),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),
|
||||||
|
char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),
|
||||||
|
char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(118),char(111),char(108),char(117),char(109),char(101),char(83),char(116),char(105),
|
||||||
|
char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(0),char(109),
|
||||||
|
char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(112),char(114),char(101),char(118),char(105),char(111),char(117),char(115),
|
||||||
|
char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),
|
||||||
|
char(109),char(95),char(97),char(99),char(99),char(117),char(109),char(117),char(108),char(97),char(116),char(101),char(100),char(70),char(111),char(114),char(99),char(101),char(0),char(109),
|
||||||
|
char(95),char(110),char(111),char(114),char(109),char(97),char(108),char(0),char(109),char(95),char(97),char(114),char(101),char(97),char(0),char(109),char(95),char(97),char(116),char(116),
|
||||||
|
char(97),char(99),char(104),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(50),char(93),
|
||||||
|
char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(76),char(101),char(110),char(103),char(116),char(104),char(0),char(109),char(95),char(98),char(98),char(101),char(110),
|
||||||
|
char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(51),
|
||||||
|
char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(65),char(114),char(101),char(97),char(0),char(109),char(95),char(99),char(48),char(91),char(52),char(93),
|
||||||
|
char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(52),char(93),char(0),char(109),char(95),
|
||||||
|
char(114),char(101),char(115),char(116),char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(99),char(49),char(0),char(109),char(95),char(99),char(50),
|
||||||
|
char(0),char(109),char(95),char(99),char(48),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(70),char(114),char(97),char(109),char(101),char(0),char(42),
|
||||||
|
char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),
|
||||||
|
char(100),char(101),char(120),char(0),char(109),char(95),char(97),char(101),char(114),char(111),char(77),char(111),char(100),char(101),char(108),char(0),char(109),char(95),char(98),char(97),
|
||||||
|
char(117),char(109),char(103),char(97),char(114),char(116),char(101),char(0),char(109),char(95),char(100),char(114),char(97),char(103),char(0),char(109),char(95),char(108),char(105),char(102),
|
||||||
|
char(116),char(0),char(109),char(95),char(112),char(114),char(101),char(115),char(115),char(117),char(114),char(101),char(0),char(109),char(95),char(118),char(111),char(108),char(117),char(109),
|
||||||
|
char(101),char(0),char(109),char(95),char(100),char(121),char(110),char(97),char(109),char(105),char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),
|
||||||
|
char(109),char(95),char(112),char(111),char(115),char(101),char(77),char(97),char(116),char(99),char(104),char(0),char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(67),
|
||||||
|
char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(107),char(105),char(110),
|
||||||
|
char(101),char(116),char(105),char(99),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),
|
||||||
|
char(109),char(95),char(115),char(111),char(102),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),
|
||||||
|
char(115),char(0),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),
|
||||||
|
char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),
|
||||||
|
char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),char(105),char(110),char(101),char(116),char(105),char(99),char(67),
|
||||||
|
char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),
|
||||||
|
char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),
|
||||||
|
char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),
|
||||||
|
char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),char(105),
|
||||||
|
char(110),char(101),char(116),char(105),char(99),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),
|
||||||
|
char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116),
|
||||||
|
char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(109),char(97),char(120),
|
||||||
|
char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(99),char(97),char(108),char(101),char(0),char(109),
|
||||||
|
char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),
|
||||||
|
char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),
|
||||||
|
char(0),char(109),char(95),char(100),char(114),char(105),char(102),char(116),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),
|
||||||
|
char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),
|
||||||
|
char(95),char(114),char(111),char(116),char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(101),char(0),char(109),char(95),char(97),char(113),char(113),char(0),char(109),
|
||||||
|
char(95),char(99),char(111),char(109),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(115),char(0),char(42),char(109),
|
||||||
|
char(95),char(119),char(101),char(105),char(103),char(104),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(80),char(111),char(115),char(105),char(116),char(105),
|
||||||
|
char(111),char(110),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(87),char(101),char(105),char(103),char(116),char(115),char(0),char(109),char(95),char(98),char(118),
|
||||||
|
char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(98),char(102),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(102),char(114),char(97),
|
||||||
|
char(109),char(101),char(120),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(108),char(111),char(99),char(105),char(105),char(0),char(109),char(95),char(105),char(110),
|
||||||
|
char(118),char(119),char(105),char(0),char(109),char(95),char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),char(0),char(109),
|
||||||
|
char(95),char(100),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(108),char(118),char(0),char(109),
|
||||||
|
char(95),char(97),char(118),char(0),char(42),char(109),char(95),char(102),char(114),char(97),char(109),char(101),char(114),char(101),char(102),char(115),char(0),char(42),char(109),char(95),
|
||||||
|
char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(115),char(115),char(101),
|
||||||
|
char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(114),char(97),char(109),char(101),char(82),char(101),char(102),char(115),char(0),char(109),char(95),char(110),
|
||||||
|
char(117),char(109),char(78),char(111),char(100),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(115),char(115),char(101),char(115),char(0),
|
||||||
|
char(109),char(95),char(105),char(100),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(105),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(110),
|
||||||
|
char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(105),char(109),char(112),char(117),char(108),char(115),
|
||||||
|
char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(108),char(100),char(97),char(109),
|
||||||
|
char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97),
|
||||||
|
char(116),char(99),char(104),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97),char(120),char(83),char(101),char(108),char(102),char(67),char(111),char(108),char(108),
|
||||||
|
char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(115),char(101),char(108),char(102),char(67),
|
||||||
|
char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(70),char(97),char(99),char(116),char(111),
|
||||||
|
char(114),char(0),char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(105),char(110),char(115),char(65),char(110),char(99),char(104),char(111),char(114),char(0),char(109),
|
||||||
|
char(95),char(99),char(111),char(108),char(108),char(105),char(100),char(101),char(0),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(110),
|
||||||
|
char(100),char(101),char(120),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121),
|
||||||
|
char(66),char(0),char(109),char(95),char(114),char(101),char(102),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(99),char(102),char(109),char(0),char(109),char(95),
|
||||||
|
char(115),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(100),char(101),char(108),char(101),char(116),char(101),char(0),char(109),char(95),char(114),char(101),char(108),
|
||||||
|
char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(91),char(50),char(93),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(116),
|
||||||
|
char(121),char(112),char(101),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(66),char(116),char(121),char(112),char(101),char(0),char(109),char(95),char(106),char(111),
|
||||||
|
char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(101),char(0),char(42),char(42),char(109),char(95),
|
||||||
|
char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(42),char(109),char(95),char(110),char(111),char(100),char(101),char(115),char(0),char(42),
|
||||||
|
char(109),char(95),char(108),char(105),char(110),char(107),char(115),char(0),char(42),char(109),char(95),char(102),char(97),char(99),char(101),char(115),char(0),char(42),char(109),char(95),
|
||||||
|
char(116),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(42),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114),
|
||||||
|
char(115),char(0),char(42),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(106),char(111),char(105),
|
||||||
|
char(110),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(109),
|
||||||
|
char(95),char(110),char(117),char(109),char(76),char(105),char(110),char(107),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(97),char(99),char(101),char(115),
|
||||||
|
char(0),char(109),char(95),char(110),char(117),char(109),char(84),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(109),char(95),char(110),
|
||||||
|
char(117),char(109),char(65),char(110),char(99),char(104),char(111),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(108),char(117),char(115),char(116),
|
||||||
|
char(101),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(74),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(99),char(111),
|
||||||
|
char(110),char(102),char(105),char(103),char(0),char(109),char(95),char(122),char(101),char(114),char(111),char(82),char(111),char(116),char(80),char(97),char(114),char(101),char(110),char(116),
|
||||||
|
char(84),char(111),char(84),char(104),char(105),char(115),char(0),char(109),char(95),char(112),char(97),char(114),char(101),char(110),char(116),char(67),char(111),char(109),char(84),char(111),
|
||||||
|
char(84),char(104),char(105),char(115),char(67),char(111),char(109),char(79),char(102),char(102),char(115),char(101),char(116),char(0),char(109),char(95),char(116),char(104),char(105),char(115),
|
||||||
|
char(80),char(105),char(118),char(111),char(116),char(84),char(111),char(84),char(104),char(105),char(115),char(67),char(111),char(109),char(79),char(102),char(102),char(115),char(101),char(116),
|
||||||
|
char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(65),char(120),char(105),char(115),char(84),char(111),char(112),char(91),char(54),char(93),char(0),char(109),
|
||||||
|
char(95),char(106),char(111),char(105),char(110),char(116),char(65),char(120),char(105),char(115),char(66),char(111),char(116),char(116),char(111),char(109),char(91),char(54),char(93),char(0),
|
||||||
|
char(109),char(95),char(108),char(105),char(110),char(107),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(0),char(109),char(95),char(108),char(105),char(110),char(107),
|
||||||
|
char(77),char(97),char(115),char(115),char(0),char(109),char(95),char(112),char(97),char(114),char(101),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(0),char(109),
|
||||||
|
char(95),char(100),char(111),char(102),char(67),char(111),char(117),char(110),char(116),char(0),char(109),char(95),char(112),char(111),char(115),char(86),char(97),char(114),char(67),char(111),
|
||||||
|
char(117),char(110),char(116),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(80),char(111),char(115),char(91),char(55),char(93),char(0),char(109),char(95),
|
||||||
|
char(106),char(111),char(105),char(110),char(116),char(86),char(101),char(108),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(84),
|
||||||
|
char(111),char(114),char(113),char(117),char(101),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(68),char(97),char(109),char(112),
|
||||||
|
char(105),char(110),char(103),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),
|
||||||
|
char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),
|
||||||
|
char(106),char(111),char(105),char(110),char(116),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(106),char(111),
|
||||||
|
char(105),char(110),char(116),char(77),char(97),char(120),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(77),
|
||||||
|
char(97),char(120),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(78),char(97),
|
||||||
|
char(109),char(101),char(0),char(42),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(108),
|
||||||
|
char(105),char(110),char(107),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0),char(42),char(109),char(95),char(112),char(97),char(100),char(100),char(105),
|
||||||
|
char(110),char(103),char(80),char(116),char(114),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),
|
||||||
|
char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(73),char(110),char(101),char(114),char(116),char(105),char(97),
|
||||||
|
char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(78),
|
||||||
|
char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0),
|
||||||
|
char(84),char(89),char(80),char(69),char(95),char(0),char(0),char(0),char(99),char(104),char(97),char(114),char(0),char(117),char(99),char(104),char(97),char(114),char(0),char(115),
|
||||||
|
char(104),char(111),char(114),char(116),char(0),char(117),char(115),char(104),char(111),char(114),char(116),char(0),char(105),char(110),char(116),char(0),char(108),char(111),char(110),char(103),
|
||||||
|
char(0),char(117),char(108),char(111),char(110),char(103),char(0),char(102),char(108),char(111),char(97),char(116),char(0),char(100),char(111),char(117),char(98),char(108),char(101),char(0),
|
||||||
|
char(118),char(111),char(105),char(100),char(0),char(80),char(111),char(105),char(110),char(116),char(101),char(114),char(65),char(114),char(114),char(97),char(121),char(0),char(98),char(116),
|
||||||
|
char(80),char(104),char(121),char(115),char(105),char(99),char(115),char(83),char(121),char(115),char(116),char(101),char(109),char(0),char(76),char(105),char(115),char(116),char(66),char(97),
|
||||||
|
char(115),char(101),char(0),char(98),char(116),char(86),char(101),char(99),char(116),char(111),char(114),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),
|
||||||
|
char(97),char(0),char(98),char(116),char(86),char(101),char(99),char(116),char(111),char(114),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),
|
||||||
|
char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(70),char(108),char(111),char(97),char(116),char(68),
|
||||||
|
char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(68),char(111),char(117),char(98),
|
||||||
|
char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(70),char(108),
|
||||||
|
char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(68),
|
||||||
|
char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),
|
||||||
|
char(109),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),
|
||||||
|
char(114),char(109),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(66),char(118),char(104),char(83),char(117),
|
||||||
|
char(98),char(116),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),
|
||||||
|
char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),
|
||||||
|
char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),
|
||||||
|
char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),
|
||||||
|
char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),
|
||||||
|
char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),
|
||||||
|
char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),
|
||||||
|
char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(68),
|
||||||
|
char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),char(97),char(116),char(105),char(99),char(80),char(108),char(97),char(110),char(101),char(83),char(104),char(97),
|
||||||
|
char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),
|
||||||
|
char(110),char(97),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(115),char(105),char(116),
|
||||||
|
char(105),char(111),char(110),char(65),char(110),char(100),char(82),char(97),char(100),char(105),char(117),char(115),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),
|
||||||
|
char(83),char(112),char(104),char(101),char(114),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(73),char(110),
|
||||||
|
char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110),
|
||||||
|
char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110),
|
||||||
|
char(116),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),
|
||||||
|
char(67),char(104),char(97),char(114),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),
|
||||||
|
char(0),char(98),char(116),char(77),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),
|
||||||
|
char(114),char(105),char(100),char(105),char(110),char(103),char(77),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),char(101),char(68),
|
||||||
|
char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104),
|
||||||
|
char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),
|
||||||
|
char(102),char(111),char(77),char(97),char(112),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(99),char(97),char(108),char(101),char(100),char(84),char(114),
|
||||||
|
char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),
|
||||||
|
char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101),char(67),char(104),char(105),char(108),char(100),
|
||||||
|
char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101),
|
||||||
|
char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(121),char(108),char(105),char(110),char(100),char(101),char(114),char(83),char(104),char(97),char(112),char(101),
|
||||||
|
char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),
|
||||||
|
char(0),char(98),char(116),char(67),char(97),char(112),char(115),char(117),char(108),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),
|
||||||
|
char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),
|
||||||
|
char(116),char(71),char(73),char(109),char(112),char(97),char(99),char(116),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),
|
||||||
|
char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(72),char(117),char(108),char(108),char(83),char(104),char(97),char(112),char(101),char(68),
|
||||||
|
char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),
|
||||||
|
char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),
|
||||||
|
char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),
|
||||||
|
char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(68),char(111),
|
||||||
|
char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111),
|
||||||
|
char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),
|
||||||
|
char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(68),char(111),char(117),char(98),char(108),char(101),char(68),
|
||||||
|
char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(70),
|
||||||
|
char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),
|
||||||
|
char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),
|
||||||
|
char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(115),char(116),char(114),
|
||||||
|
char(97),char(105),char(110),char(116),char(73),char(110),char(102),char(111),char(49),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),
|
||||||
|
char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),
|
||||||
|
char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),
|
||||||
|
char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(121),char(112),
|
||||||
|
char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),
|
||||||
|
char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),
|
||||||
|
char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),
|
||||||
|
char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),
|
||||||
|
char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),
|
||||||
|
char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),
|
||||||
|
char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),
|
||||||
|
char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),
|
||||||
|
char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),
|
||||||
|
char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),
|
||||||
|
char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),
|
||||||
|
char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),
|
||||||
|
char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),
|
||||||
|
char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),
|
||||||
|
char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),
|
||||||
|
char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),
|
||||||
|
char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),
|
||||||
|
char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),
|
||||||
|
char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),
|
||||||
|
char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),
|
||||||
|
char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),
|
||||||
|
char(114),char(105),char(110),char(103),char(50),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),
|
||||||
|
char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(50),
|
||||||
|
char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),
|
||||||
|
char(50),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),
|
||||||
|
char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),
|
||||||
|
char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(97),char(114),
|
||||||
|
char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),
|
||||||
|
char(98),char(116),char(71),char(101),char(97),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),
|
||||||
|
char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(77),char(97),char(116),char(101),char(114),
|
||||||
|
char(105),char(97),char(108),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(78),char(111),char(100),char(101),
|
||||||
|
char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(97),char(116),
|
||||||
|
char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(83),
|
||||||
|
char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(84),char(101),char(116),char(114),char(97),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),
|
||||||
|
char(116),char(82),char(105),char(103),char(105),char(100),char(65),char(110),char(99),char(104),char(111),char(114),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),
|
||||||
|
char(116),char(66),char(111),char(100),char(121),char(67),char(111),char(110),char(102),char(105),char(103),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),
|
||||||
|
char(66),char(111),char(100),char(121),char(80),char(111),char(115),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),
|
||||||
|
char(121),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66),
|
||||||
|
char(111),char(100),char(121),char(74),char(111),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66),
|
||||||
|
char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),
|
||||||
|
char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),
|
||||||
|
char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(70),char(108),char(111),char(97),char(116),char(68),
|
||||||
|
char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108),
|
||||||
|
char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(70),char(108),char(111),
|
||||||
|
char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(0),char(84),char(76),char(69),char(78),char(1),char(0),char(1),char(0),char(2),char(0),char(2),char(0),
|
||||||
|
char(4),char(0),char(4),char(0),char(4),char(0),char(4),char(0),char(8),char(0),char(0),char(0),char(16),char(0),char(48),char(0),char(16),char(0),char(16),char(0),
|
||||||
|
char(32),char(0),char(16),char(0),char(32),char(0),char(48),char(0),char(96),char(0),char(64),char(0),char(-128),char(0),char(20),char(0),char(48),char(0),char(80),char(0),
|
||||||
|
char(16),char(0),char(96),char(0),char(-112),char(0),char(16),char(0),char(56),char(0),char(56),char(0),char(20),char(0),char(72),char(0),char(4),char(0),char(4),char(0),
|
||||||
|
char(8),char(0),char(4),char(0),char(56),char(0),char(32),char(0),char(80),char(0),char(72),char(0),char(96),char(0),char(80),char(0),char(32),char(0),char(64),char(0),
|
||||||
|
char(64),char(0),char(64),char(0),char(16),char(0),char(72),char(0),char(80),char(0),char(-16),char(1),char(24),char(1),char(-104),char(0),char(88),char(0),char(-72),char(0),
|
||||||
|
char(104),char(0),char(0),char(2),char(-64),char(3),char(8),char(0),char(64),char(0),char(64),char(0),char(0),char(0),char(80),char(0),char(96),char(0),char(-112),char(0),
|
||||||
|
char(-128),char(0),char(104),char(1),char(-24),char(0),char(-104),char(1),char(-120),char(1),char(-32),char(0),char(8),char(1),char(-40),char(1),char(104),char(1),char(-128),char(2),
|
||||||
|
char(-112),char(2),char(-64),char(4),char(-40),char(0),char(120),char(1),char(104),char(0),char(-104),char(0),char(16),char(0),char(104),char(0),char(24),char(0),char(40),char(0),
|
||||||
|
char(104),char(0),char(96),char(0),char(104),char(0),char(-56),char(0),char(104),char(1),char(112),char(0),char(-24),char(1),char(0),char(3),char(-104),char(1),char(-48),char(0),
|
||||||
|
char(112),char(0),char(0),char(0),char(83),char(84),char(82),char(67),char(84),char(0),char(0),char(0),char(10),char(0),char(3),char(0),char(4),char(0),char(0),char(0),
|
||||||
|
char(4),char(0),char(1),char(0),char(9),char(0),char(2),char(0),char(11),char(0),char(3),char(0),char(10),char(0),char(3),char(0),char(10),char(0),char(4),char(0),
|
||||||
|
char(10),char(0),char(5),char(0),char(12),char(0),char(2),char(0),char(9),char(0),char(6),char(0),char(9),char(0),char(7),char(0),char(13),char(0),char(1),char(0),
|
||||||
|
char(7),char(0),char(8),char(0),char(14),char(0),char(1),char(0),char(8),char(0),char(8),char(0),char(15),char(0),char(1),char(0),char(7),char(0),char(8),char(0),
|
||||||
|
char(16),char(0),char(1),char(0),char(8),char(0),char(8),char(0),char(17),char(0),char(1),char(0),char(13),char(0),char(9),char(0),char(18),char(0),char(1),char(0),
|
||||||
|
char(14),char(0),char(9),char(0),char(19),char(0),char(2),char(0),char(17),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(20),char(0),char(2),char(0),
|
||||||
|
char(18),char(0),char(10),char(0),char(14),char(0),char(11),char(0),char(21),char(0),char(4),char(0),char(4),char(0),char(12),char(0),char(4),char(0),char(13),char(0),
|
||||||
|
char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(22),char(0),char(6),char(0),char(13),char(0),char(16),char(0),char(13),char(0),char(17),char(0),
|
||||||
|
char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(23),char(0),char(6),char(0),
|
||||||
|
char(14),char(0),char(16),char(0),char(14),char(0),char(17),char(0),char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),
|
||||||
|
char(0),char(0),char(21),char(0),char(24),char(0),char(3),char(0),char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(4),char(0),char(22),char(0),
|
||||||
|
char(25),char(0),char(12),char(0),char(13),char(0),char(23),char(0),char(13),char(0),char(24),char(0),char(13),char(0),char(25),char(0),char(4),char(0),char(26),char(0),
|
||||||
|
char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),char(22),char(0),char(30),char(0),char(24),char(0),char(31),char(0),
|
||||||
|
char(21),char(0),char(32),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(26),char(0),char(12),char(0),char(14),char(0),char(23),char(0),
|
||||||
|
char(14),char(0),char(24),char(0),char(14),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),
|
||||||
|
char(4),char(0),char(29),char(0),char(23),char(0),char(30),char(0),char(24),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),
|
||||||
|
char(21),char(0),char(32),char(0),char(27),char(0),char(3),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(36),char(0),char(0),char(0),char(37),char(0),
|
||||||
|
char(28),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(40),char(0),char(7),char(0),char(41),char(0),
|
||||||
|
char(0),char(0),char(21),char(0),char(29),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(42),char(0),
|
||||||
|
char(7),char(0),char(43),char(0),char(4),char(0),char(44),char(0),char(30),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0),
|
||||||
|
char(31),char(0),char(4),char(0),char(29),char(0),char(47),char(0),char(30),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0),
|
||||||
|
char(32),char(0),char(1),char(0),char(4),char(0),char(50),char(0),char(33),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0),
|
||||||
|
char(34),char(0),char(2),char(0),char(2),char(0),char(52),char(0),char(0),char(0),char(51),char(0),char(35),char(0),char(2),char(0),char(0),char(0),char(52),char(0),
|
||||||
|
char(0),char(0),char(53),char(0),char(36),char(0),char(8),char(0),char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(32),char(0),char(56),char(0),
|
||||||
|
char(34),char(0),char(57),char(0),char(35),char(0),char(58),char(0),char(33),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0),
|
||||||
|
char(37),char(0),char(4),char(0),char(36),char(0),char(62),char(0),char(13),char(0),char(63),char(0),char(4),char(0),char(64),char(0),char(0),char(0),char(37),char(0),
|
||||||
|
char(38),char(0),char(7),char(0),char(27),char(0),char(38),char(0),char(37),char(0),char(65),char(0),char(25),char(0),char(66),char(0),char(26),char(0),char(67),char(0),
|
||||||
|
char(39),char(0),char(68),char(0),char(7),char(0),char(43),char(0),char(0),char(0),char(69),char(0),char(40),char(0),char(2),char(0),char(38),char(0),char(70),char(0),
|
||||||
|
char(13),char(0),char(39),char(0),char(41),char(0),char(4),char(0),char(19),char(0),char(71),char(0),char(27),char(0),char(72),char(0),char(4),char(0),char(73),char(0),
|
||||||
|
char(7),char(0),char(74),char(0),char(42),char(0),char(4),char(0),char(27),char(0),char(38),char(0),char(41),char(0),char(75),char(0),char(4),char(0),char(76),char(0),
|
||||||
|
char(7),char(0),char(43),char(0),char(43),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),
|
||||||
|
char(44),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(78),char(0),char(0),char(0),char(37),char(0),char(45),char(0),char(3),char(0),
|
||||||
|
char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(46),char(0),char(4),char(0),char(4),char(0),char(79),char(0),
|
||||||
|
char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0),char(7),char(0),char(82),char(0),char(39),char(0),char(14),char(0),char(4),char(0),char(83),char(0),
|
||||||
|
char(4),char(0),char(84),char(0),char(46),char(0),char(85),char(0),char(4),char(0),char(86),char(0),char(7),char(0),char(87),char(0),char(7),char(0),char(88),char(0),
|
||||||
|
char(7),char(0),char(89),char(0),char(7),char(0),char(90),char(0),char(7),char(0),char(91),char(0),char(4),char(0),char(92),char(0),char(4),char(0),char(93),char(0),
|
||||||
|
char(4),char(0),char(94),char(0),char(4),char(0),char(95),char(0),char(0),char(0),char(37),char(0),char(47),char(0),char(5),char(0),char(27),char(0),char(38),char(0),
|
||||||
|
char(37),char(0),char(65),char(0),char(13),char(0),char(39),char(0),char(7),char(0),char(43),char(0),char(4),char(0),char(96),char(0),char(48),char(0),char(5),char(0),
|
||||||
|
char(29),char(0),char(47),char(0),char(13),char(0),char(97),char(0),char(14),char(0),char(98),char(0),char(4),char(0),char(99),char(0),char(0),char(0),char(100),char(0),
|
||||||
|
char(49),char(0),char(27),char(0),char(9),char(0),char(101),char(0),char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0),
|
||||||
|
char(20),char(0),char(104),char(0),char(20),char(0),char(105),char(0),char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),char(14),char(0),char(108),char(0),
|
||||||
|
char(8),char(0),char(109),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(112),char(0),char(8),char(0),char(113),char(0),
|
||||||
|
char(8),char(0),char(114),char(0),char(8),char(0),char(115),char(0),char(8),char(0),char(116),char(0),char(8),char(0),char(117),char(0),char(8),char(0),char(118),char(0),
|
||||||
|
char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),char(4),char(0),char(123),char(0),
|
||||||
|
char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0),char(0),char(0),char(37),char(0),char(50),char(0),char(27),char(0),char(9),char(0),char(101),char(0),
|
||||||
|
char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0),char(19),char(0),char(104),char(0),char(19),char(0),char(105),char(0),
|
||||||
|
char(13),char(0),char(106),char(0),char(13),char(0),char(107),char(0),char(13),char(0),char(108),char(0),char(7),char(0),char(109),char(0),char(7),char(0),char(110),char(0),
|
||||||
|
char(7),char(0),char(111),char(0),char(7),char(0),char(112),char(0),char(7),char(0),char(113),char(0),char(7),char(0),char(114),char(0),char(7),char(0),char(115),char(0),
|
||||||
|
char(7),char(0),char(116),char(0),char(7),char(0),char(117),char(0),char(7),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),
|
||||||
|
char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),char(4),char(0),char(123),char(0),char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0),
|
||||||
|
char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0),char(8),char(0),char(126),char(0),char(8),char(0),char(127),char(0),char(8),char(0),char(111),char(0),
|
||||||
|
char(8),char(0),char(-128),char(0),char(8),char(0),char(115),char(0),char(8),char(0),char(-127),char(0),char(8),char(0),char(-126),char(0),char(8),char(0),char(-125),char(0),
|
||||||
|
char(8),char(0),char(-124),char(0),char(8),char(0),char(-123),char(0),char(8),char(0),char(-122),char(0),char(8),char(0),char(-121),char(0),char(8),char(0),char(-120),char(0),
|
||||||
|
char(8),char(0),char(-119),char(0),char(8),char(0),char(-118),char(0),char(8),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0),
|
||||||
|
char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0),
|
||||||
|
char(7),char(0),char(126),char(0),char(7),char(0),char(127),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(-128),char(0),char(7),char(0),char(115),char(0),
|
||||||
|
char(7),char(0),char(-127),char(0),char(7),char(0),char(-126),char(0),char(7),char(0),char(-125),char(0),char(7),char(0),char(-124),char(0),char(7),char(0),char(-123),char(0),
|
||||||
|
char(7),char(0),char(-122),char(0),char(7),char(0),char(-121),char(0),char(7),char(0),char(-120),char(0),char(7),char(0),char(-119),char(0),char(7),char(0),char(-118),char(0),
|
||||||
|
char(7),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0),char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0),
|
||||||
|
char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(53),char(0),char(2),char(0),char(51),char(0),char(-111),char(0),char(14),char(0),char(-110),char(0),
|
||||||
|
char(54),char(0),char(2),char(0),char(52),char(0),char(-111),char(0),char(13),char(0),char(-110),char(0),char(55),char(0),char(21),char(0),char(50),char(0),char(-109),char(0),
|
||||||
|
char(17),char(0),char(-108),char(0),char(13),char(0),char(-107),char(0),char(13),char(0),char(-106),char(0),char(13),char(0),char(-105),char(0),char(13),char(0),char(-104),char(0),
|
||||||
|
char(13),char(0),char(-110),char(0),char(13),char(0),char(-103),char(0),char(13),char(0),char(-102),char(0),char(13),char(0),char(-101),char(0),char(13),char(0),char(-100),char(0),
|
||||||
|
char(7),char(0),char(-99),char(0),char(7),char(0),char(-98),char(0),char(7),char(0),char(-97),char(0),char(7),char(0),char(-96),char(0),char(7),char(0),char(-95),char(0),
|
||||||
|
char(7),char(0),char(-94),char(0),char(7),char(0),char(-93),char(0),char(7),char(0),char(-92),char(0),char(7),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),
|
||||||
|
char(56),char(0),char(22),char(0),char(49),char(0),char(-109),char(0),char(18),char(0),char(-108),char(0),char(14),char(0),char(-107),char(0),char(14),char(0),char(-106),char(0),
|
||||||
|
char(14),char(0),char(-105),char(0),char(14),char(0),char(-104),char(0),char(14),char(0),char(-110),char(0),char(14),char(0),char(-103),char(0),char(14),char(0),char(-102),char(0),
|
||||||
|
char(14),char(0),char(-101),char(0),char(14),char(0),char(-100),char(0),char(8),char(0),char(-99),char(0),char(8),char(0),char(-98),char(0),char(8),char(0),char(-97),char(0),
|
||||||
|
char(8),char(0),char(-96),char(0),char(8),char(0),char(-95),char(0),char(8),char(0),char(-94),char(0),char(8),char(0),char(-93),char(0),char(8),char(0),char(-92),char(0),
|
||||||
|
char(8),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(0),char(0),char(37),char(0),char(57),char(0),char(2),char(0),char(4),char(0),char(-89),char(0),
|
||||||
|
char(4),char(0),char(-88),char(0),char(58),char(0),char(13),char(0),char(55),char(0),char(-87),char(0),char(55),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),
|
||||||
|
char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),
|
||||||
|
char(7),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),
|
||||||
|
char(59),char(0),char(13),char(0),char(60),char(0),char(-87),char(0),char(60),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),
|
||||||
|
char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),
|
||||||
|
char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(61),char(0),char(14),char(0),
|
||||||
|
char(56),char(0),char(-87),char(0),char(56),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),
|
||||||
|
char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(8),char(0),char(-81),char(0),char(8),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),
|
||||||
|
char(4),char(0),char(-78),char(0),char(8),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(0),char(0),char(-75),char(0),char(62),char(0),char(3),char(0),
|
||||||
|
char(59),char(0),char(-74),char(0),char(13),char(0),char(-73),char(0),char(13),char(0),char(-72),char(0),char(63),char(0),char(3),char(0),char(61),char(0),char(-74),char(0),
|
||||||
|
char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(64),char(0),char(3),char(0),char(59),char(0),char(-74),char(0),char(14),char(0),char(-73),char(0),
|
||||||
|
char(14),char(0),char(-72),char(0),char(65),char(0),char(13),char(0),char(59),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),
|
||||||
|
char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),
|
||||||
|
char(7),char(0),char(-64),char(0),char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),
|
||||||
|
char(66),char(0),char(13),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),
|
||||||
|
char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0),
|
||||||
|
char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(67),char(0),char(14),char(0),
|
||||||
|
char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),
|
||||||
|
char(4),char(0),char(-67),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(-65),char(0),char(8),char(0),char(-64),char(0),char(8),char(0),char(-63),char(0),
|
||||||
|
char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(0),char(0),char(-59),char(0),char(68),char(0),char(10),char(0),
|
||||||
|
char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(8),char(0),char(-58),char(0),char(8),char(0),char(-57),char(0),
|
||||||
|
char(8),char(0),char(-56),char(0),char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(8),char(0),char(127),char(0),
|
||||||
|
char(69),char(0),char(11),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-58),char(0),
|
||||||
|
char(7),char(0),char(-57),char(0),char(7),char(0),char(-56),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),
|
||||||
|
char(7),char(0),char(127),char(0),char(0),char(0),char(21),char(0),char(70),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),
|
||||||
|
char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),
|
||||||
|
char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(71),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),
|
||||||
|
char(20),char(0),char(-70),char(0),char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(14),char(0),char(-53),char(0),char(14),char(0),char(-52),char(0),
|
||||||
|
char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(72),char(0),char(5),char(0),char(70),char(0),char(-49),char(0),char(4),char(0),char(-48),char(0),
|
||||||
|
char(7),char(0),char(-47),char(0),char(7),char(0),char(-46),char(0),char(7),char(0),char(-45),char(0),char(73),char(0),char(5),char(0),char(71),char(0),char(-49),char(0),
|
||||||
|
char(4),char(0),char(-48),char(0),char(8),char(0),char(-47),char(0),char(8),char(0),char(-46),char(0),char(8),char(0),char(-45),char(0),char(74),char(0),char(41),char(0),
|
||||||
|
char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),
|
||||||
|
char(13),char(0),char(-44),char(0),char(13),char(0),char(-43),char(0),char(13),char(0),char(-42),char(0),char(13),char(0),char(-41),char(0),char(13),char(0),char(-40),char(0),
|
||||||
|
char(13),char(0),char(-39),char(0),char(13),char(0),char(-38),char(0),char(13),char(0),char(-37),char(0),char(13),char(0),char(-36),char(0),char(13),char(0),char(-35),char(0),
|
||||||
|
char(13),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0),char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0),
|
||||||
|
char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),char(13),char(0),char(-28),char(0),
|
||||||
|
char(13),char(0),char(-27),char(0),char(13),char(0),char(-26),char(0),char(13),char(0),char(-25),char(0),char(13),char(0),char(-24),char(0),char(13),char(0),char(-23),char(0),
|
||||||
|
char(13),char(0),char(-22),char(0),char(13),char(0),char(-21),char(0),char(13),char(0),char(-20),char(0),char(13),char(0),char(-19),char(0),char(13),char(0),char(-18),char(0),
|
||||||
|
char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0),char(0),char(0),char(-15),char(0),char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0),
|
||||||
|
char(4),char(0),char(-12),char(0),char(75),char(0),char(41),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),
|
||||||
|
char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(14),char(0),char(-44),char(0),char(14),char(0),char(-43),char(0),char(14),char(0),char(-42),char(0),
|
||||||
|
char(14),char(0),char(-41),char(0),char(14),char(0),char(-40),char(0),char(14),char(0),char(-39),char(0),char(14),char(0),char(-38),char(0),char(14),char(0),char(-37),char(0),
|
||||||
|
char(14),char(0),char(-36),char(0),char(14),char(0),char(-35),char(0),char(14),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0),
|
||||||
|
char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0),char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(14),char(0),char(-53),char(0),
|
||||||
|
char(14),char(0),char(-52),char(0),char(14),char(0),char(-28),char(0),char(14),char(0),char(-27),char(0),char(14),char(0),char(-26),char(0),char(14),char(0),char(-25),char(0),
|
||||||
|
char(14),char(0),char(-24),char(0),char(14),char(0),char(-23),char(0),char(14),char(0),char(-22),char(0),char(14),char(0),char(-21),char(0),char(14),char(0),char(-20),char(0),
|
||||||
|
char(14),char(0),char(-19),char(0),char(14),char(0),char(-18),char(0),char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0),char(0),char(0),char(-15),char(0),
|
||||||
|
char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0),char(4),char(0),char(-12),char(0),char(76),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),
|
||||||
|
char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-55),char(0),char(7),char(0),char(-54),char(0),char(7),char(0),char(-53),char(0),
|
||||||
|
char(7),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(77),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),
|
||||||
|
char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(8),char(0),char(-55),char(0),char(8),char(0),char(-54),char(0),char(8),char(0),char(-53),char(0),
|
||||||
|
char(8),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(78),char(0),char(5),char(0),char(58),char(0),char(-74),char(0),
|
||||||
|
char(13),char(0),char(-11),char(0),char(13),char(0),char(-10),char(0),char(7),char(0),char(-9),char(0),char(0),char(0),char(37),char(0),char(79),char(0),char(4),char(0),
|
||||||
|
char(61),char(0),char(-74),char(0),char(14),char(0),char(-11),char(0),char(14),char(0),char(-10),char(0),char(8),char(0),char(-9),char(0),char(80),char(0),char(4),char(0),
|
||||||
|
char(7),char(0),char(-8),char(0),char(7),char(0),char(-7),char(0),char(7),char(0),char(-6),char(0),char(4),char(0),char(79),char(0),char(81),char(0),char(10),char(0),
|
||||||
|
char(80),char(0),char(-5),char(0),char(13),char(0),char(-4),char(0),char(13),char(0),char(-3),char(0),char(13),char(0),char(-2),char(0),char(13),char(0),char(-1),char(0),
|
||||||
|
char(13),char(0),char(0),char(1),char(7),char(0),char(-99),char(0),char(7),char(0),char(1),char(1),char(4),char(0),char(2),char(1),char(4),char(0),char(53),char(0),
|
||||||
|
char(82),char(0),char(4),char(0),char(80),char(0),char(-5),char(0),char(4),char(0),char(3),char(1),char(7),char(0),char(4),char(1),char(4),char(0),char(5),char(1),
|
||||||
|
char(83),char(0),char(4),char(0),char(13),char(0),char(0),char(1),char(80),char(0),char(-5),char(0),char(4),char(0),char(6),char(1),char(7),char(0),char(7),char(1),
|
||||||
|
char(84),char(0),char(7),char(0),char(13),char(0),char(8),char(1),char(80),char(0),char(-5),char(0),char(4),char(0),char(9),char(1),char(7),char(0),char(10),char(1),
|
||||||
|
char(7),char(0),char(11),char(1),char(7),char(0),char(12),char(1),char(4),char(0),char(53),char(0),char(85),char(0),char(6),char(0),char(17),char(0),char(13),char(1),
|
||||||
|
char(13),char(0),char(11),char(1),char(13),char(0),char(14),char(1),char(60),char(0),char(15),char(1),char(4),char(0),char(16),char(1),char(7),char(0),char(12),char(1),
|
||||||
|
char(86),char(0),char(26),char(0),char(4),char(0),char(17),char(1),char(7),char(0),char(18),char(1),char(7),char(0),char(127),char(0),char(7),char(0),char(19),char(1),
|
||||||
|
char(7),char(0),char(20),char(1),char(7),char(0),char(21),char(1),char(7),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1),
|
||||||
|
char(7),char(0),char(25),char(1),char(7),char(0),char(26),char(1),char(7),char(0),char(27),char(1),char(7),char(0),char(28),char(1),char(7),char(0),char(29),char(1),
|
||||||
|
char(7),char(0),char(30),char(1),char(7),char(0),char(31),char(1),char(7),char(0),char(32),char(1),char(7),char(0),char(33),char(1),char(7),char(0),char(34),char(1),
|
||||||
|
char(7),char(0),char(35),char(1),char(7),char(0),char(36),char(1),char(4),char(0),char(37),char(1),char(4),char(0),char(38),char(1),char(4),char(0),char(39),char(1),
|
||||||
|
char(4),char(0),char(40),char(1),char(4),char(0),char(120),char(0),char(87),char(0),char(12),char(0),char(17),char(0),char(41),char(1),char(17),char(0),char(42),char(1),
|
||||||
|
char(17),char(0),char(43),char(1),char(13),char(0),char(44),char(1),char(13),char(0),char(45),char(1),char(7),char(0),char(46),char(1),char(4),char(0),char(47),char(1),
|
||||||
|
char(4),char(0),char(48),char(1),char(4),char(0),char(49),char(1),char(4),char(0),char(50),char(1),char(7),char(0),char(10),char(1),char(4),char(0),char(53),char(0),
|
||||||
|
char(88),char(0),char(27),char(0),char(19),char(0),char(51),char(1),char(17),char(0),char(52),char(1),char(17),char(0),char(53),char(1),char(13),char(0),char(44),char(1),
|
||||||
|
char(13),char(0),char(54),char(1),char(13),char(0),char(55),char(1),char(13),char(0),char(56),char(1),char(13),char(0),char(57),char(1),char(13),char(0),char(58),char(1),
|
||||||
|
char(4),char(0),char(59),char(1),char(7),char(0),char(60),char(1),char(4),char(0),char(61),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(63),char(1),
|
||||||
|
char(7),char(0),char(64),char(1),char(7),char(0),char(65),char(1),char(4),char(0),char(66),char(1),char(4),char(0),char(67),char(1),char(7),char(0),char(68),char(1),
|
||||||
|
char(7),char(0),char(69),char(1),char(7),char(0),char(70),char(1),char(7),char(0),char(71),char(1),char(7),char(0),char(72),char(1),char(7),char(0),char(73),char(1),
|
||||||
|
char(4),char(0),char(74),char(1),char(4),char(0),char(75),char(1),char(4),char(0),char(76),char(1),char(89),char(0),char(12),char(0),char(9),char(0),char(77),char(1),
|
||||||
|
char(9),char(0),char(78),char(1),char(13),char(0),char(79),char(1),char(7),char(0),char(80),char(1),char(7),char(0),char(-125),char(0),char(7),char(0),char(81),char(1),
|
||||||
|
char(4),char(0),char(82),char(1),char(13),char(0),char(83),char(1),char(4),char(0),char(84),char(1),char(4),char(0),char(85),char(1),char(4),char(0),char(86),char(1),
|
||||||
|
char(4),char(0),char(53),char(0),char(90),char(0),char(19),char(0),char(50),char(0),char(-109),char(0),char(87),char(0),char(87),char(1),char(80),char(0),char(88),char(1),
|
||||||
|
char(81),char(0),char(89),char(1),char(82),char(0),char(90),char(1),char(83),char(0),char(91),char(1),char(84),char(0),char(92),char(1),char(85),char(0),char(93),char(1),
|
||||||
|
char(88),char(0),char(94),char(1),char(89),char(0),char(95),char(1),char(4),char(0),char(96),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(97),char(1),
|
||||||
|
char(4),char(0),char(98),char(1),char(4),char(0),char(99),char(1),char(4),char(0),char(100),char(1),char(4),char(0),char(101),char(1),char(4),char(0),char(102),char(1),
|
||||||
|
char(86),char(0),char(103),char(1),char(91),char(0),char(24),char(0),char(16),char(0),char(104),char(1),char(14),char(0),char(105),char(1),char(14),char(0),char(106),char(1),
|
||||||
|
char(14),char(0),char(107),char(1),char(14),char(0),char(108),char(1),char(14),char(0),char(109),char(1),char(8),char(0),char(110),char(1),char(4),char(0),char(111),char(1),
|
||||||
|
char(4),char(0),char(86),char(1),char(4),char(0),char(112),char(1),char(4),char(0),char(113),char(1),char(8),char(0),char(114),char(1),char(8),char(0),char(115),char(1),
|
||||||
|
char(8),char(0),char(116),char(1),char(8),char(0),char(117),char(1),char(8),char(0),char(118),char(1),char(8),char(0),char(119),char(1),char(8),char(0),char(120),char(1),
|
||||||
|
char(8),char(0),char(121),char(1),char(8),char(0),char(122),char(1),char(0),char(0),char(123),char(1),char(0),char(0),char(124),char(1),char(49),char(0),char(125),char(1),
|
||||||
|
char(0),char(0),char(126),char(1),char(92),char(0),char(24),char(0),char(15),char(0),char(104),char(1),char(13),char(0),char(105),char(1),char(13),char(0),char(106),char(1),
|
||||||
|
char(13),char(0),char(107),char(1),char(13),char(0),char(108),char(1),char(13),char(0),char(109),char(1),char(4),char(0),char(112),char(1),char(7),char(0),char(110),char(1),
|
||||||
|
char(4),char(0),char(111),char(1),char(4),char(0),char(86),char(1),char(7),char(0),char(114),char(1),char(7),char(0),char(115),char(1),char(7),char(0),char(116),char(1),
|
||||||
|
char(4),char(0),char(113),char(1),char(7),char(0),char(117),char(1),char(7),char(0),char(118),char(1),char(7),char(0),char(119),char(1),char(7),char(0),char(120),char(1),
|
||||||
|
char(7),char(0),char(121),char(1),char(7),char(0),char(122),char(1),char(0),char(0),char(123),char(1),char(0),char(0),char(124),char(1),char(50),char(0),char(125),char(1),
|
||||||
|
char(0),char(0),char(126),char(1),char(93),char(0),char(9),char(0),char(20),char(0),char(127),char(1),char(14),char(0),char(-128),char(1),char(8),char(0),char(-127),char(1),
|
||||||
|
char(0),char(0),char(-126),char(1),char(91),char(0),char(90),char(1),char(49),char(0),char(-125),char(1),char(0),char(0),char(126),char(1),char(4),char(0),char(97),char(1),
|
||||||
|
char(0),char(0),char(37),char(0),char(94),char(0),char(7),char(0),char(0),char(0),char(-126),char(1),char(92),char(0),char(90),char(1),char(50),char(0),char(-125),char(1),
|
||||||
|
char(19),char(0),char(127),char(1),char(13),char(0),char(-128),char(1),char(7),char(0),char(-127),char(1),char(4),char(0),char(97),char(1),};
|
||||||
|
int sBulletDNAlen64= sizeof(sBulletDNAstr64);
|
||||||
Reference in New Issue
Block a user