From c4f6303a0aba3781826506a591b9d00fdcf8fb84 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Thu, 7 May 2015 15:13:20 -0700 Subject: [PATCH 1/2] Update .travis.yml --- .travis.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 51702f1d9..628563fd7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,16 +5,14 @@ os: compiler: - gcc - clang -install: - - sudo apt-get update - - sudo apt-get install libglew-dev script: - echo "CXX="$CXX - echo "CC="$CC - cmake . -G "Unix Makefiles" #-DCMAKE_CXX_FLAGS=-Werror - make -j8 - - sudo make install # Test again with double precision - cmake . -G "Unix Makefiles" -DUSE_DOUBLE_PRECISION=ON #-DCMAKE_CXX_FLAGS=-Werror - make -j8 - - sudo make install + # Test again with shared libraries + - cmake . -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON + - make -j8 From 98e1334a64e0efd69afec20a58e3720d9f3ac87a Mon Sep 17 00:00:00 2001 From: Gabor Puhr Date: Fri, 22 May 2015 12:58:28 +0200 Subject: [PATCH 2/2] Auto limitation of spring stiffness and damping in btGeneric6DofSpring2Constraint is now optional. Fix: spring stiffness limitation used the mass incorrectly in btGeneric6DofSpring2Constraint. --- .../BulletWorldImporter/btWorldImporter.cpp | 16 +- .../btGeneric6DofSpring2Constraint.cpp | 64 ++-- .../btGeneric6DofSpring2Constraint.h | 144 ++++---- src/LinearMath/btSerializer.cpp | 314 +++++++++--------- 4 files changed, 290 insertions(+), 248 deletions(-) diff --git a/Extras/Serialize/BulletWorldImporter/btWorldImporter.cpp b/Extras/Serialize/BulletWorldImporter/btWorldImporter.cpp index a481dbf84..cfa2cf92d 100644 --- a/Extras/Serialize/BulletWorldImporter/btWorldImporter.cpp +++ b/Extras/Serialize/BulletWorldImporter/btWorldImporter.cpp @@ -991,17 +991,17 @@ void btWorldImporter::convertConstraintFloat(btTypedConstraintFloatData* constra //6-dof: 3 linear followed by 3 angular for (i=0;i<3;i++) { - dof->setStiffness(i,dofData->m_linearSpringStiffness.m_floats[i]); + dof->setStiffness(i,dofData->m_linearSpringStiffness.m_floats[i],dofData->m_linearSpringStiffnessLimited[i]!=0); dof->setEquilibriumPoint(i,dofData->m_linearEquilibriumPoint.m_floats[i]); dof->enableSpring(i,dofData->m_linearEnableSpring[i]!=0); - dof->setDamping(i,dofData->m_linearSpringDamping.m_floats[i]); + dof->setDamping(i,dofData->m_linearSpringDamping.m_floats[i],dofData->m_linearSpringDampingLimited[i]); } for (i=0;i<3;i++) { - dof->setStiffness(i+3,dofData->m_angularSpringStiffness.m_floats[i]); + dof->setStiffness(i+3,dofData->m_angularSpringStiffness.m_floats[i],dofData->m_angularSpringStiffnessLimited[i]); dof->setEquilibriumPoint(i+3,dofData->m_angularEquilibriumPoint.m_floats[i]); dof->enableSpring(i+3,dofData->m_angularEnableSpring[i]!=0); - dof->setDamping(i+3,dofData->m_angularSpringDamping.m_floats[i]); + dof->setDamping(i+3,dofData->m_angularSpringDamping.m_floats[i],dofData->m_angularSpringDampingLimited[i]); } } @@ -1321,17 +1321,17 @@ void btWorldImporter::convertConstraintDouble(btTypedConstraintDoubleData* const //6-dof: 3 linear followed by 3 angular for (i=0;i<3;i++) { - dof->setStiffness(i,dofData->m_linearSpringStiffness.m_floats[i]); + dof->setStiffness(i,dofData->m_linearSpringStiffness.m_floats[i],dofData->m_linearSpringStiffnessLimited[i]); dof->setEquilibriumPoint(i,dofData->m_linearEquilibriumPoint.m_floats[i]); dof->enableSpring(i,dofData->m_linearEnableSpring[i]!=0); - dof->setDamping(i,dofData->m_linearSpringDamping.m_floats[i]); + dof->setDamping(i,dofData->m_linearSpringDamping.m_floats[i],dofData->m_linearSpringDampingLimited[i]); } for (i=0;i<3;i++) { - dof->setStiffness(i+3,dofData->m_angularSpringStiffness.m_floats[i]); + dof->setStiffness(i+3,dofData->m_angularSpringStiffness.m_floats[i],dofData->m_angularSpringStiffnessLimited[i]); dof->setEquilibriumPoint(i+3,dofData->m_angularEquilibriumPoint.m_floats[i]); dof->enableSpring(i+3,dofData->m_angularEnableSpring[i]!=0); - dof->setDamping(i+3,dofData->m_angularSpringDamping.m_floats[i]); + dof->setDamping(i+3,dofData->m_angularSpringDamping.m_floats[i],dofData->m_angularSpringDampingLimited[i]); } } diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp index cfa997bc5..c2c091b48 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.cpp @@ -495,22 +495,24 @@ int btGeneric6DofSpring2Constraint::setLinearLimits(btConstraintInfo2* info, int { if(m_linearLimits.m_currentLimit[i] || m_linearLimits.m_enableMotor[i] || m_linearLimits.m_enableSpring[i]) { // re-use rotational motor code - limot.m_bounce = m_linearLimits.m_bounce[i]; - limot.m_currentLimit = m_linearLimits.m_currentLimit[i]; - limot.m_currentPosition = m_linearLimits.m_currentLinearDiff[i]; - limot.m_currentLimitError = m_linearLimits.m_currentLimitError[i]; - limot.m_currentLimitErrorHi = m_linearLimits.m_currentLimitErrorHi[i]; - limot.m_enableMotor = m_linearLimits.m_enableMotor[i]; - limot.m_servoMotor = m_linearLimits.m_servoMotor[i]; - limot.m_servoTarget = m_linearLimits.m_servoTarget[i]; - limot.m_enableSpring = m_linearLimits.m_enableSpring[i]; - limot.m_springStiffness = m_linearLimits.m_springStiffness[i]; - limot.m_springDamping = m_linearLimits.m_springDamping[i]; - limot.m_equilibriumPoint = m_linearLimits.m_equilibriumPoint[i]; - limot.m_hiLimit = m_linearLimits.m_upperLimit[i]; - limot.m_loLimit = m_linearLimits.m_lowerLimit[i]; - limot.m_maxMotorForce = m_linearLimits.m_maxMotorForce[i]; - limot.m_targetVelocity = m_linearLimits.m_targetVelocity[i]; + limot.m_bounce = m_linearLimits.m_bounce[i]; + limot.m_currentLimit = m_linearLimits.m_currentLimit[i]; + limot.m_currentPosition = m_linearLimits.m_currentLinearDiff[i]; + limot.m_currentLimitError = m_linearLimits.m_currentLimitError[i]; + limot.m_currentLimitErrorHi = m_linearLimits.m_currentLimitErrorHi[i]; + limot.m_enableMotor = m_linearLimits.m_enableMotor[i]; + limot.m_servoMotor = m_linearLimits.m_servoMotor[i]; + limot.m_servoTarget = m_linearLimits.m_servoTarget[i]; + limot.m_enableSpring = m_linearLimits.m_enableSpring[i]; + limot.m_springStiffness = m_linearLimits.m_springStiffness[i]; + limot.m_springStiffnessLimited = m_linearLimits.m_springStiffnessLimited[i]; + limot.m_springDamping = m_linearLimits.m_springDamping[i]; + limot.m_springDampingLimited = m_linearLimits.m_springDampingLimited[i]; + limot.m_equilibriumPoint = m_linearLimits.m_equilibriumPoint[i]; + limot.m_hiLimit = m_linearLimits.m_upperLimit[i]; + limot.m_loLimit = m_linearLimits.m_lowerLimit[i]; + limot.m_maxMotorForce = m_linearLimits.m_maxMotorForce[i]; + limot.m_targetVelocity = m_linearLimits.m_targetVelocity[i]; btVector3 axis = m_calculatedTransformA.getBasis().getColumn(i); int flags = m_flags >> (i * BT_6DOF_FLAGS_AXIS_SHIFT2); limot.m_stopCFM = (flags & BT_6DOF_FLAGS_CFM_STOP2) ? m_linearLimits.m_stopCFM[i] : info->cfm[0]; @@ -785,12 +787,12 @@ int btGeneric6DofSpring2Constraint::get_limit_motor_info2( //limit stiffness (the spring should not be sampled faster that the quarter of its angular frequency) - if( 0.25 < angularfreq * dt) + if(limot->m_springStiffnessLimited && 0.25 < angularfreq * dt) { - ks = BT_ONE / dt / dt / btScalar(16.0) / m; + ks = BT_ONE / dt / dt / btScalar(16.0) * m; } - //avoid overdamping - if(kd * dt > m) + //avoid damping that would blow up the spring + if(limot->m_springDampingLimited && kd * dt > m) { kd = m / dt; } @@ -1023,22 +1025,28 @@ void btGeneric6DofSpring2Constraint::enableSpring(int index, bool onOff) m_angularLimits[index - 3] .m_enableSpring = onOff; } -void btGeneric6DofSpring2Constraint::setStiffness(int index, btScalar stiffness) +void btGeneric6DofSpring2Constraint::setStiffness(int index, btScalar stiffness, bool limitIfNeeded) { btAssert((index >= 0) && (index < 6)); - if (index<3) + if (index<3) { m_linearLimits.m_springStiffness[index] = stiffness; - else - m_angularLimits[index - 3] .m_springStiffness = stiffness; + m_linearLimits.m_springStiffnessLimited[index] = limitIfNeeded; + } else { + m_angularLimits[index - 3].m_springStiffness = stiffness; + m_angularLimits[index - 3].m_springStiffnessLimited = limitIfNeeded; + } } -void btGeneric6DofSpring2Constraint::setDamping(int index, btScalar damping) +void btGeneric6DofSpring2Constraint::setDamping(int index, btScalar damping, bool limitIfNeeded) { btAssert((index >= 0) && (index < 6)); - if (index<3) + if (index<3) { m_linearLimits.m_springDamping[index] = damping; - else - m_angularLimits[index - 3] .m_springDamping = damping; + m_linearLimits.m_springDampingLimited[index] = limitIfNeeded; + } else { + m_angularLimits[index - 3].m_springDamping = damping; + m_angularLimits[index - 3].m_springDampingLimited = limitIfNeeded; + } } void btGeneric6DofSpring2Constraint::setEquilibriumPoint() diff --git a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h index 20c643605..738d52ce8 100644 --- a/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h +++ b/src/BulletDynamics/ConstraintSolver/btGeneric6DofSpring2Constraint.h @@ -86,7 +86,9 @@ public: btScalar m_servoTarget; bool m_enableSpring; btScalar m_springStiffness; + bool m_springStiffnessLimited; btScalar m_springDamping; + bool m_springDampingLimited; btScalar m_equilibriumPoint; btScalar m_currentLimitError; @@ -96,22 +98,24 @@ public: btRotationalLimitMotor2() { - m_loLimit = 1.0f; - m_hiLimit = -1.0f; - m_bounce = 0.0f; - m_stopERP = 0.2f; - m_stopCFM = 0.f; - m_motorERP = 0.9f; - m_motorCFM = 0.f; - m_enableMotor = false; - m_targetVelocity = 0; - m_maxMotorForce = 0.1f; - m_servoMotor = false; - m_servoTarget = 0; - m_enableSpring = false; - m_springStiffness = 0; - m_springDamping = 0; - m_equilibriumPoint = 0; + m_loLimit = 1.0f; + m_hiLimit = -1.0f; + m_bounce = 0.0f; + m_stopERP = 0.2f; + m_stopCFM = 0.f; + m_motorERP = 0.9f; + m_motorCFM = 0.f; + m_enableMotor = false; + m_targetVelocity = 0; + m_maxMotorForce = 0.1f; + m_servoMotor = false; + m_servoTarget = 0; + m_enableSpring = false; + m_springStiffness = 0; + m_springStiffnessLimited = false; + m_springDamping = 0; + m_springDampingLimited = false; + m_equilibriumPoint = 0; m_currentLimitError = 0; m_currentLimitErrorHi = 0; @@ -121,22 +125,24 @@ public: btRotationalLimitMotor2(const btRotationalLimitMotor2 & limot) { - m_loLimit = limot.m_loLimit; - m_hiLimit = limot.m_hiLimit; - m_bounce = limot.m_bounce; - m_stopERP = limot.m_stopERP; - m_stopCFM = limot.m_stopCFM; - m_motorERP = limot.m_motorERP; - m_motorCFM = limot.m_motorCFM; - m_enableMotor = limot.m_enableMotor; - m_targetVelocity = limot.m_targetVelocity; - m_maxMotorForce = limot.m_maxMotorForce; - m_servoMotor = limot.m_servoMotor; - m_servoTarget = limot.m_servoTarget; - m_enableSpring = limot.m_enableSpring; - m_springStiffness = limot.m_springStiffness; - m_springDamping = limot.m_springDamping; - m_equilibriumPoint = limot.m_equilibriumPoint; + m_loLimit = limot.m_loLimit; + m_hiLimit = limot.m_hiLimit; + m_bounce = limot.m_bounce; + m_stopERP = limot.m_stopERP; + m_stopCFM = limot.m_stopCFM; + m_motorERP = limot.m_motorERP; + m_motorCFM = limot.m_motorCFM; + m_enableMotor = limot.m_enableMotor; + m_targetVelocity = limot.m_targetVelocity; + m_maxMotorForce = limot.m_maxMotorForce; + m_servoMotor = limot.m_servoMotor; + m_servoTarget = limot.m_servoTarget; + m_enableSpring = limot.m_enableSpring; + m_springStiffness = limot.m_springStiffness; + m_springStiffnessLimited = limot.m_springStiffnessLimited; + m_springDamping = limot.m_springDamping; + m_springDampingLimited = limot.m_springDampingLimited; + m_equilibriumPoint = limot.m_equilibriumPoint; m_currentLimitError = limot.m_currentLimitError; m_currentLimitErrorHi = limot.m_currentLimitErrorHi; @@ -174,7 +180,9 @@ public: bool m_enableSpring[3]; btVector3 m_servoTarget; btVector3 m_springStiffness; + bool m_springStiffnessLimited[3]; btVector3 m_springDamping; + bool m_springDampingLimited[3]; btVector3 m_equilibriumPoint; btVector3 m_targetVelocity; btVector3 m_maxMotorForce; @@ -200,15 +208,17 @@ public: for(int i=0; i < 3; i++) { - m_enableMotor[i] = false; - m_servoMotor[i] = false; - m_enableSpring[i] = false; - m_servoTarget[i] = btScalar(0.f); - m_springStiffness[i] = btScalar(0.f); - m_springDamping[i] = btScalar(0.f); - m_equilibriumPoint[i] = btScalar(0.f); - m_targetVelocity[i] = btScalar(0.f); - m_maxMotorForce[i] = btScalar(0.f); + m_enableMotor[i] = false; + m_servoMotor[i] = false; + m_enableSpring[i] = false; + m_servoTarget[i] = btScalar(0.f); + m_springStiffness[i] = btScalar(0.f); + m_springStiffnessLimited[i] = false; + m_springDamping[i] = btScalar(0.f); + m_springDampingLimited[i] = false; + m_equilibriumPoint[i] = btScalar(0.f); + m_targetVelocity[i] = btScalar(0.f); + m_maxMotorForce[i] = btScalar(0.f); m_currentLimit[i] = 0; } @@ -230,15 +240,17 @@ public: for(int i=0; i < 3; i++) { - m_enableMotor[i] = other.m_enableMotor[i]; - m_servoMotor[i] = other.m_servoMotor[i]; - m_enableSpring[i] = other.m_enableSpring[i]; - m_servoTarget[i] = other.m_servoTarget[i]; - m_springStiffness[i] = other.m_springStiffness[i]; - m_springDamping[i] = other.m_springDamping[i]; - m_equilibriumPoint[i] = other.m_equilibriumPoint[i]; - m_targetVelocity[i] = other.m_targetVelocity[i]; - m_maxMotorForce[i] = other.m_maxMotorForce[i]; + m_enableMotor[i] = other.m_enableMotor[i]; + m_servoMotor[i] = other.m_servoMotor[i]; + m_enableSpring[i] = other.m_enableSpring[i]; + m_servoTarget[i] = other.m_servoTarget[i]; + m_springStiffness[i] = other.m_springStiffness[i]; + m_springStiffnessLimited[i] = other.m_springStiffnessLimited[i]; + m_springDamping[i] = other.m_springDamping[i]; + m_springDampingLimited[i] = other.m_springDampingLimited[i]; + m_equilibriumPoint[i] = other.m_equilibriumPoint[i]; + m_targetVelocity[i] = other.m_targetVelocity[i]; + m_maxMotorForce[i] = other.m_maxMotorForce[i]; m_currentLimit[i] = other.m_currentLimit[i]; } @@ -467,8 +479,8 @@ public: void setMaxMotorForce(int index, btScalar force); void enableSpring(int index, bool onOff); - void setStiffness(int index, btScalar stiffness); - void setDamping(int index, btScalar damping); + void setStiffness(int index, btScalar stiffness, bool limitIfNeeded = true); // if limitIfNeeded is true the system will automatically limit the stiffness in necessary situations where otherwise the spring would move unrealistically too widely + void setDamping(int index, btScalar damping, bool limitIfNeeded = true); // if limitIfNeeded is true the system will automatically limit the damping in necessary situations where otherwise the spring would blow up void setEquilibriumPoint(); // set the current constraint position/orientation as an equilibrium point for all DOF void setEquilibriumPoint(int index); // set the current constraint position/orientation as an equilibrium point for given DOF void setEquilibriumPoint(int index, btScalar val); @@ -502,6 +514,8 @@ struct btGeneric6DofSpring2ConstraintData char m_linearEnableMotor[4]; char m_linearServoMotor[4]; char m_linearEnableSpring[4]; + char m_linearSpringStiffnessLimited[4]; + char m_linearSpringDampingLimited[4]; char m_padding1[4]; btVector3FloatData m_angularUpperLimit; @@ -520,10 +534,10 @@ struct btGeneric6DofSpring2ConstraintData char m_angularEnableMotor[4]; char m_angularServoMotor[4]; char m_angularEnableSpring[4]; - char m_padding2[4]; + char m_angularSpringStiffnessLimited[4]; + char m_angularSpringDampingLimited[4]; int m_rotateOrder; - char m_padding3[4]; }; struct btGeneric6DofSpring2ConstraintDoubleData2 @@ -548,6 +562,8 @@ struct btGeneric6DofSpring2ConstraintDoubleData2 char m_linearEnableMotor[4]; char m_linearServoMotor[4]; char m_linearEnableSpring[4]; + char m_linearSpringStiffnessLimited[4]; + char m_linearSpringDampingLimited[4]; char m_padding1[4]; btVector3DoubleData m_angularUpperLimit; @@ -566,10 +582,10 @@ struct btGeneric6DofSpring2ConstraintDoubleData2 char m_angularEnableMotor[4]; char m_angularServoMotor[4]; char m_angularEnableSpring[4]; - char m_padding2[4]; + char m_angularSpringStiffnessLimited[4]; + char m_angularSpringDampingLimited[4]; int m_rotateOrder; - char m_padding3[4]; }; SIMD_FORCE_INLINE int btGeneric6DofSpring2Constraint::calculateSerializeBufferSize() const @@ -617,9 +633,11 @@ SIMD_FORCE_INLINE const char* btGeneric6DofSpring2Constraint::serialize(void* da dof->m_angularEquilibriumPoint.m_floats[3] = 0; for (i=0;i<4;i++) { - dof->m_angularEnableMotor[i] = i < 3 ? ( m_angularLimits[i].m_enableMotor ? 1 : 0 ) : 0; - dof->m_angularServoMotor[i] = i < 3 ? ( m_angularLimits[i].m_servoMotor ? 1 : 0 ) : 0; - dof->m_angularEnableSpring[i] = i < 3 ? ( m_angularLimits[i].m_enableSpring ? 1 : 0 ) : 0; + dof->m_angularEnableMotor[i] = i < 3 ? ( m_angularLimits[i].m_enableMotor ? 1 : 0 ) : 0; + dof->m_angularServoMotor[i] = i < 3 ? ( m_angularLimits[i].m_servoMotor ? 1 : 0 ) : 0; + dof->m_angularEnableSpring[i] = i < 3 ? ( m_angularLimits[i].m_enableSpring ? 1 : 0 ) : 0; + dof->m_angularSpringStiffnessLimited[i] = i < 3 ? ( m_angularLimits[i].m_springStiffnessLimited ? 1 : 0 ) : 0; + dof->m_angularSpringDampingLimited[i] = i < 3 ? ( m_angularLimits[i].m_springDampingLimited ? 1 : 0 ) : 0; } m_linearLimits.m_lowerLimit.serialize( dof->m_linearLowerLimit ); @@ -637,9 +655,11 @@ SIMD_FORCE_INLINE const char* btGeneric6DofSpring2Constraint::serialize(void* da m_linearLimits.m_equilibriumPoint.serialize( dof->m_linearEquilibriumPoint ); for (i=0;i<4;i++) { - dof->m_linearEnableMotor[i] = i < 3 ? ( m_linearLimits.m_enableMotor[i] ? 1 : 0 ) : 0; - dof->m_linearServoMotor[i] = i < 3 ? ( m_linearLimits.m_servoMotor[i] ? 1 : 0 ) : 0; - dof->m_linearEnableSpring[i] = i < 3 ? ( m_linearLimits.m_enableSpring[i] ? 1 : 0 ) : 0; + dof->m_linearEnableMotor[i] = i < 3 ? ( m_linearLimits.m_enableMotor[i] ? 1 : 0 ) : 0; + dof->m_linearServoMotor[i] = i < 3 ? ( m_linearLimits.m_servoMotor[i] ? 1 : 0 ) : 0; + dof->m_linearEnableSpring[i] = i < 3 ? ( m_linearLimits.m_enableSpring[i] ? 1 : 0 ) : 0; + dof->m_linearSpringStiffnessLimited[i] = i < 3 ? ( m_linearLimits.m_springStiffnessLimited[i] ? 1 : 0 ) : 0; + dof->m_linearSpringDampingLimited[i] = i < 3 ? ( m_linearLimits.m_springDampingLimited[i] ? 1 : 0 ) : 0; } dof->m_rotateOrder = m_rotateOrder; diff --git a/src/LinearMath/btSerializer.cpp b/src/LinearMath/btSerializer.cpp index 9676dbc43..5095eb2c2 100644 --- a/src/LinearMath/btSerializer.cpp +++ b/src/LinearMath/btSerializer.cpp @@ -1,5 +1,5 @@ char sBulletDNAstr[]= { -char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(99),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109), +char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(102),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), @@ -176,23 +176,29 @@ char(110),char(103),char(0),char(109),char(95),char(108),char(105),char(110),cha 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(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(112), -char(97),char(100),char(100),char(105),char(110),char(103),char(50),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(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(116),char(97),char(117),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), @@ -390,7 +396,7 @@ char(20),char(0),char(64),char(0),char(4),char(0),char(4),char(0),char(8),char(0 char(76),char(0),char(76),char(0),char(24),char(0),char(60),char(0),char(60),char(0),char(60),char(0),char(16),char(0),char(64),char(0),char(68),char(0),char(-48),char(1), char(0),char(1),char(-72),char(0),char(-104),char(0),char(104),char(0),char(88),char(0),char(-24),char(1),char(-96),char(3),char(8),char(0),char(52),char(0),char(52),char(0), char(0),char(0),char(68),char(0),char(84),char(0),char(-124),char(0),char(116),char(0),char(92),char(1),char(-36),char(0),char(-116),char(1),char(124),char(1),char(-44),char(0), -char(-4),char(0),char(-52),char(1),char(92),char(1),char(116),char(2),char(124),char(2),char(-84),char(4),char(-52),char(0),char(108),char(1),char(92),char(0),char(-116),char(0), +char(-4),char(0),char(-52),char(1),char(92),char(1),char(116),char(2),char(-124),char(2),char(-76),char(4),char(-52),char(0),char(108),char(1),char(92),char(0),char(-116),char(0), char(16),char(0),char(100),char(0),char(20),char(0),char(36),char(0),char(100),char(0),char(92),char(0),char(104),char(0),char(-64),char(0),char(92),char(1),char(104),char(0), char(-84),char(1),char(0),char(0),char(83),char(84),char(82),char(67),char(78),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), @@ -482,70 +488,71 @@ char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(14),c char(14),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0),char(70),char(0),char(5),char(0),char(68),char(0),char(-69),char(0), char(4),char(0),char(-68),char(0),char(7),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(71),char(0),char(5),char(0), char(69),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(8),char(0),char(-67),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(-65),char(0), -char(72),char(0),char(39),char(0),char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(13),char(0),char(-75),char(0), +char(72),char(0),char(41),char(0),char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(13),char(0),char(-75),char(0), char(13),char(0),char(-74),char(0),char(13),char(0),char(-64),char(0),char(13),char(0),char(-63),char(0),char(13),char(0),char(-62),char(0),char(13),char(0),char(-61),char(0), char(13),char(0),char(-60),char(0),char(13),char(0),char(-59),char(0),char(13),char(0),char(-58),char(0),char(13),char(0),char(-57),char(0),char(13),char(0),char(-56),char(0), char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),char(0),char(0),char(-53),char(0),char(0),char(0),char(-52),char(0),char(0),char(0),char(-51),char(0), -char(0),char(0),char(-80),char(0),char(13),char(0),char(-73),char(0),char(13),char(0),char(-72),char(0),char(13),char(0),char(-50),char(0),char(13),char(0),char(-49),char(0), +char(0),char(0),char(-50),char(0),char(0),char(0),char(-49),char(0),char(0),char(0),char(-80),char(0),char(13),char(0),char(-73),char(0),char(13),char(0),char(-72),char(0), char(13),char(0),char(-48),char(0),char(13),char(0),char(-47),char(0),char(13),char(0),char(-46),char(0),char(13),char(0),char(-45),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(0),char(0),char(-39),char(0), -char(0),char(0),char(-38),char(0),char(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0),char(4),char(0),char(-35),char(0),char(0),char(0),char(100),char(0), -char(73),char(0),char(39),char(0),char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(14),char(0),char(-75),char(0), -char(14),char(0),char(-74),char(0),char(14),char(0),char(-64),char(0),char(14),char(0),char(-63),char(0),char(14),char(0),char(-62),char(0),char(14),char(0),char(-61),char(0), -char(14),char(0),char(-60),char(0),char(14),char(0),char(-59),char(0),char(14),char(0),char(-58),char(0),char(14),char(0),char(-57),char(0),char(14),char(0),char(-56),char(0), -char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(0),char(0),char(-53),char(0),char(0),char(0),char(-52),char(0),char(0),char(0),char(-51),char(0), -char(0),char(0),char(-80),char(0),char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(14),char(0),char(-50),char(0),char(14),char(0),char(-49),char(0), -char(14),char(0),char(-48),char(0),char(14),char(0),char(-47),char(0),char(14),char(0),char(-46),char(0),char(14),char(0),char(-45),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(0),char(0),char(-39),char(0), -char(0),char(0),char(-38),char(0),char(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0),char(4),char(0),char(-35),char(0),char(0),char(0),char(100),char(0), -char(74),char(0),char(9),char(0),char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(7),char(0),char(-75),char(0), -char(7),char(0),char(-74),char(0),char(7),char(0),char(-73),char(0),char(7),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0), -char(75),char(0),char(9),char(0),char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(8),char(0),char(-75),char(0), -char(8),char(0),char(-74),char(0),char(8),char(0),char(-73),char(0),char(8),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0), -char(76),char(0),char(5),char(0),char(56),char(0),char(-95),char(0),char(13),char(0),char(-34),char(0),char(13),char(0),char(-33),char(0),char(7),char(0),char(-32),char(0), -char(0),char(0),char(37),char(0),char(77),char(0),char(4),char(0),char(59),char(0),char(-95),char(0),char(14),char(0),char(-34),char(0),char(14),char(0),char(-33),char(0), -char(8),char(0),char(-32),char(0),char(50),char(0),char(22),char(0),char(8),char(0),char(-31),char(0),char(8),char(0),char(-76),char(0),char(8),char(0),char(111),char(0), -char(8),char(0),char(-30),char(0),char(8),char(0),char(113),char(0),char(8),char(0),char(-29),char(0),char(8),char(0),char(-28),char(0),char(8),char(0),char(-27),char(0), -char(8),char(0),char(-26),char(0),char(8),char(0),char(-25),char(0),char(8),char(0),char(-24),char(0),char(8),char(0),char(-23),char(0),char(8),char(0),char(-22),char(0), -char(8),char(0),char(-21),char(0),char(8),char(0),char(-20),char(0),char(8),char(0),char(-19),char(0),char(4),char(0),char(-18),char(0),char(4),char(0),char(-17),char(0), -char(4),char(0),char(-16),char(0),char(4),char(0),char(-15),char(0),char(4),char(0),char(-14),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0), -char(7),char(0),char(-31),char(0),char(7),char(0),char(-76),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(-30),char(0),char(7),char(0),char(113),char(0), -char(7),char(0),char(-29),char(0),char(7),char(0),char(-28),char(0),char(7),char(0),char(-27),char(0),char(7),char(0),char(-26),char(0),char(7),char(0),char(-25),char(0), -char(7),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0),char(7),char(0),char(-20),char(0), -char(7),char(0),char(-19),char(0),char(4),char(0),char(-18),char(0),char(4),char(0),char(-17),char(0),char(4),char(0),char(-16),char(0),char(4),char(0),char(-15),char(0), -char(4),char(0),char(-14),char(0),char(0),char(0),char(37),char(0),char(78),char(0),char(4),char(0),char(7),char(0),char(-13),char(0),char(7),char(0),char(-12),char(0), -char(7),char(0),char(-11),char(0),char(4),char(0),char(79),char(0),char(79),char(0),char(10),char(0),char(78),char(0),char(-10),char(0),char(13),char(0),char(-9),char(0), -char(13),char(0),char(-8),char(0),char(13),char(0),char(-7),char(0),char(13),char(0),char(-6),char(0),char(13),char(0),char(-5),char(0),char(7),char(0),char(-120),char(0), -char(7),char(0),char(-4),char(0),char(4),char(0),char(-3),char(0),char(4),char(0),char(53),char(0),char(80),char(0),char(4),char(0),char(78),char(0),char(-10),char(0), -char(4),char(0),char(-2),char(0),char(7),char(0),char(-1),char(0),char(4),char(0),char(0),char(1),char(81),char(0),char(4),char(0),char(13),char(0),char(-5),char(0), -char(78),char(0),char(-10),char(0),char(4),char(0),char(1),char(1),char(7),char(0),char(2),char(1),char(82),char(0),char(7),char(0),char(13),char(0),char(3),char(1), -char(78),char(0),char(-10),char(0),char(4),char(0),char(4),char(1),char(7),char(0),char(5),char(1),char(7),char(0),char(6),char(1),char(7),char(0),char(7),char(1), -char(4),char(0),char(53),char(0),char(83),char(0),char(6),char(0),char(15),char(0),char(8),char(1),char(13),char(0),char(6),char(1),char(13),char(0),char(9),char(1), -char(58),char(0),char(10),char(1),char(4),char(0),char(11),char(1),char(7),char(0),char(7),char(1),char(84),char(0),char(26),char(0),char(4),char(0),char(12),char(1), -char(7),char(0),char(13),char(1),char(7),char(0),char(-76),char(0),char(7),char(0),char(14),char(1),char(7),char(0),char(15),char(1),char(7),char(0),char(16),char(1), -char(7),char(0),char(17),char(1),char(7),char(0),char(18),char(1),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(4),char(0),char(32),char(1),char(4),char(0),char(33),char(1),char(4),char(0),char(34),char(1),char(4),char(0),char(35),char(1),char(4),char(0),char(118),char(0), -char(85),char(0),char(12),char(0),char(15),char(0),char(36),char(1),char(15),char(0),char(37),char(1),char(15),char(0),char(38),char(1),char(13),char(0),char(39),char(1), -char(13),char(0),char(40),char(1),char(7),char(0),char(41),char(1),char(4),char(0),char(42),char(1),char(4),char(0),char(43),char(1),char(4),char(0),char(44),char(1), -char(4),char(0),char(45),char(1),char(7),char(0),char(5),char(1),char(4),char(0),char(53),char(0),char(86),char(0),char(27),char(0),char(17),char(0),char(46),char(1), -char(15),char(0),char(47),char(1),char(15),char(0),char(48),char(1),char(13),char(0),char(39),char(1),char(13),char(0),char(49),char(1),char(13),char(0),char(50),char(1), -char(13),char(0),char(51),char(1),char(13),char(0),char(52),char(1),char(13),char(0),char(53),char(1),char(4),char(0),char(54),char(1),char(7),char(0),char(55),char(1), -char(4),char(0),char(56),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(58),char(1),char(7),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(7),char(0),char(63),char(1),char(7),char(0),char(64),char(1),char(7),char(0),char(65),char(1), -char(7),char(0),char(66),char(1),char(7),char(0),char(67),char(1),char(7),char(0),char(68),char(1),char(4),char(0),char(69),char(1),char(4),char(0),char(70),char(1), -char(4),char(0),char(71),char(1),char(87),char(0),char(12),char(0),char(9),char(0),char(72),char(1),char(9),char(0),char(73),char(1),char(13),char(0),char(74),char(1), -char(7),char(0),char(75),char(1),char(7),char(0),char(-27),char(0),char(7),char(0),char(76),char(1),char(4),char(0),char(77),char(1),char(13),char(0),char(78),char(1), -char(4),char(0),char(79),char(1),char(4),char(0),char(80),char(1),char(4),char(0),char(81),char(1),char(4),char(0),char(53),char(0),char(88),char(0),char(19),char(0), -char(48),char(0),char(126),char(0),char(85),char(0),char(82),char(1),char(78),char(0),char(83),char(1),char(79),char(0),char(84),char(1),char(80),char(0),char(85),char(1), -char(81),char(0),char(86),char(1),char(82),char(0),char(87),char(1),char(83),char(0),char(88),char(1),char(86),char(0),char(89),char(1),char(87),char(0),char(90),char(1), -char(4),char(0),char(91),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(92),char(1),char(4),char(0),char(93),char(1),char(4),char(0),char(94),char(1), -char(4),char(0),char(95),char(1),char(4),char(0),char(96),char(1),char(4),char(0),char(97),char(1),char(84),char(0),char(98),char(1),}; +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(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0),char(0),char(0),char(-35),char(0),char(0),char(0),char(-34),char(0), +char(0),char(0),char(-33),char(0),char(4),char(0),char(-32),char(0),char(73),char(0),char(41),char(0),char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0), +char(18),char(0),char(-91),char(0),char(14),char(0),char(-75),char(0),char(14),char(0),char(-74),char(0),char(14),char(0),char(-64),char(0),char(14),char(0),char(-63),char(0), +char(14),char(0),char(-62),char(0),char(14),char(0),char(-61),char(0),char(14),char(0),char(-60),char(0),char(14),char(0),char(-59),char(0),char(14),char(0),char(-58),char(0), +char(14),char(0),char(-57),char(0),char(14),char(0),char(-56),char(0),char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(0),char(0),char(-53),char(0), +char(0),char(0),char(-52),char(0),char(0),char(0),char(-51),char(0),char(0),char(0),char(-50),char(0),char(0),char(0),char(-49),char(0),char(0),char(0),char(-80),char(0), +char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(14),char(0),char(-48),char(0),char(14),char(0),char(-47),char(0),char(14),char(0),char(-46),char(0), +char(14),char(0),char(-45),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(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0), +char(0),char(0),char(-35),char(0),char(0),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(4),char(0),char(-32),char(0),char(74),char(0),char(9),char(0), +char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(7),char(0),char(-75),char(0),char(7),char(0),char(-74),char(0), +char(7),char(0),char(-73),char(0),char(7),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0),char(75),char(0),char(9),char(0), +char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(8),char(0),char(-75),char(0),char(8),char(0),char(-74),char(0), +char(8),char(0),char(-73),char(0),char(8),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0),char(76),char(0),char(5),char(0), +char(56),char(0),char(-95),char(0),char(13),char(0),char(-31),char(0),char(13),char(0),char(-30),char(0),char(7),char(0),char(-29),char(0),char(0),char(0),char(37),char(0), +char(77),char(0),char(4),char(0),char(59),char(0),char(-95),char(0),char(14),char(0),char(-31),char(0),char(14),char(0),char(-30),char(0),char(8),char(0),char(-29),char(0), +char(50),char(0),char(22),char(0),char(8),char(0),char(-28),char(0),char(8),char(0),char(-76),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(-27),char(0), +char(8),char(0),char(113),char(0),char(8),char(0),char(-26),char(0),char(8),char(0),char(-25),char(0),char(8),char(0),char(-24),char(0),char(8),char(0),char(-23),char(0), +char(8),char(0),char(-22),char(0),char(8),char(0),char(-21),char(0),char(8),char(0),char(-20),char(0),char(8),char(0),char(-19),char(0),char(8),char(0),char(-18),char(0), +char(8),char(0),char(-17),char(0),char(8),char(0),char(-16),char(0),char(4),char(0),char(-15),char(0),char(4),char(0),char(-14),char(0),char(4),char(0),char(-13),char(0), +char(4),char(0),char(-12),char(0),char(4),char(0),char(-11),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0),char(7),char(0),char(-28),char(0), +char(7),char(0),char(-76),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(-27),char(0),char(7),char(0),char(113),char(0),char(7),char(0),char(-26),char(0), +char(7),char(0),char(-25),char(0),char(7),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0), +char(7),char(0),char(-20),char(0),char(7),char(0),char(-19),char(0),char(7),char(0),char(-18),char(0),char(7),char(0),char(-17),char(0),char(7),char(0),char(-16),char(0), +char(4),char(0),char(-15),char(0),char(4),char(0),char(-14),char(0),char(4),char(0),char(-13),char(0),char(4),char(0),char(-12),char(0),char(4),char(0),char(-11),char(0), +char(0),char(0),char(37),char(0),char(78),char(0),char(4),char(0),char(7),char(0),char(-10),char(0),char(7),char(0),char(-9),char(0),char(7),char(0),char(-8),char(0), +char(4),char(0),char(79),char(0),char(79),char(0),char(10),char(0),char(78),char(0),char(-7),char(0),char(13),char(0),char(-6),char(0),char(13),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(7),char(0),char(-120),char(0),char(7),char(0),char(-1),char(0), +char(4),char(0),char(0),char(1),char(4),char(0),char(53),char(0),char(80),char(0),char(4),char(0),char(78),char(0),char(-7),char(0),char(4),char(0),char(1),char(1), +char(7),char(0),char(2),char(1),char(4),char(0),char(3),char(1),char(81),char(0),char(4),char(0),char(13),char(0),char(-2),char(0),char(78),char(0),char(-7),char(0), +char(4),char(0),char(4),char(1),char(7),char(0),char(5),char(1),char(82),char(0),char(7),char(0),char(13),char(0),char(6),char(1),char(78),char(0),char(-7),char(0), +char(4),char(0),char(7),char(1),char(7),char(0),char(8),char(1),char(7),char(0),char(9),char(1),char(7),char(0),char(10),char(1),char(4),char(0),char(53),char(0), +char(83),char(0),char(6),char(0),char(15),char(0),char(11),char(1),char(13),char(0),char(9),char(1),char(13),char(0),char(12),char(1),char(58),char(0),char(13),char(1), +char(4),char(0),char(14),char(1),char(7),char(0),char(10),char(1),char(84),char(0),char(26),char(0),char(4),char(0),char(15),char(1),char(7),char(0),char(16),char(1), +char(7),char(0),char(-76),char(0),char(7),char(0),char(17),char(1),char(7),char(0),char(18),char(1),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(4),char(0),char(35),char(1), +char(4),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(118),char(0),char(85),char(0),char(12),char(0), +char(15),char(0),char(39),char(1),char(15),char(0),char(40),char(1),char(15),char(0),char(41),char(1),char(13),char(0),char(42),char(1),char(13),char(0),char(43),char(1), +char(7),char(0),char(44),char(1),char(4),char(0),char(45),char(1),char(4),char(0),char(46),char(1),char(4),char(0),char(47),char(1),char(4),char(0),char(48),char(1), +char(7),char(0),char(8),char(1),char(4),char(0),char(53),char(0),char(86),char(0),char(27),char(0),char(17),char(0),char(49),char(1),char(15),char(0),char(50),char(1), +char(15),char(0),char(51),char(1),char(13),char(0),char(42),char(1),char(13),char(0),char(52),char(1),char(13),char(0),char(53),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(4),char(0),char(57),char(1),char(7),char(0),char(58),char(1),char(4),char(0),char(59),char(1), +char(4),char(0),char(60),char(1),char(4),char(0),char(61),char(1),char(7),char(0),char(62),char(1),char(7),char(0),char(63),char(1),char(4),char(0),char(64),char(1), +char(4),char(0),char(65),char(1),char(7),char(0),char(66),char(1),char(7),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(4),char(0),char(72),char(1),char(4),char(0),char(73),char(1),char(4),char(0),char(74),char(1), +char(87),char(0),char(12),char(0),char(9),char(0),char(75),char(1),char(9),char(0),char(76),char(1),char(13),char(0),char(77),char(1),char(7),char(0),char(78),char(1), +char(7),char(0),char(-24),char(0),char(7),char(0),char(79),char(1),char(4),char(0),char(80),char(1),char(13),char(0),char(81),char(1),char(4),char(0),char(82),char(1), +char(4),char(0),char(83),char(1),char(4),char(0),char(84),char(1),char(4),char(0),char(53),char(0),char(88),char(0),char(19),char(0),char(48),char(0),char(126),char(0), +char(85),char(0),char(85),char(1),char(78),char(0),char(86),char(1),char(79),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(86),char(0),char(92),char(1),char(87),char(0),char(93),char(1),char(4),char(0),char(94),char(1), +char(4),char(0),char(60),char(1),char(4),char(0),char(95),char(1),char(4),char(0),char(96),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(84),char(0),char(101),char(1),}; int sBulletDNAlen= sizeof(sBulletDNAstr); char sBulletDNAstr64[]= { -char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(99),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109), +char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(102),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), @@ -722,23 +729,29 @@ char(110),char(103),char(0),char(109),char(95),char(108),char(105),char(110),cha 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(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(112), -char(97),char(100),char(100),char(105),char(110),char(103),char(50),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(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(116),char(97),char(117),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), @@ -936,7 +949,7 @@ char(20),char(0),char(72),char(0),char(4),char(0),char(4),char(0),char(8),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(-32),char(1), char(16),char(1),char(-72),char(0),char(-104),char(0),char(104),char(0),char(88),char(0),char(-8),char(1),char(-80),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(-120),char(2),char(-72),char(4),char(-40),char(0),char(120),char(1),char(104),char(0),char(-104),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(-32),char(1),char(0),char(0),char(83),char(84),char(82),char(67),char(78),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), @@ -1028,64 +1041,65 @@ char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(14),c char(14),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0),char(70),char(0),char(5),char(0),char(68),char(0),char(-69),char(0), char(4),char(0),char(-68),char(0),char(7),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(71),char(0),char(5),char(0), char(69),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(8),char(0),char(-67),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(-65),char(0), -char(72),char(0),char(39),char(0),char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(13),char(0),char(-75),char(0), +char(72),char(0),char(41),char(0),char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(13),char(0),char(-75),char(0), char(13),char(0),char(-74),char(0),char(13),char(0),char(-64),char(0),char(13),char(0),char(-63),char(0),char(13),char(0),char(-62),char(0),char(13),char(0),char(-61),char(0), char(13),char(0),char(-60),char(0),char(13),char(0),char(-59),char(0),char(13),char(0),char(-58),char(0),char(13),char(0),char(-57),char(0),char(13),char(0),char(-56),char(0), char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),char(0),char(0),char(-53),char(0),char(0),char(0),char(-52),char(0),char(0),char(0),char(-51),char(0), -char(0),char(0),char(-80),char(0),char(13),char(0),char(-73),char(0),char(13),char(0),char(-72),char(0),char(13),char(0),char(-50),char(0),char(13),char(0),char(-49),char(0), +char(0),char(0),char(-50),char(0),char(0),char(0),char(-49),char(0),char(0),char(0),char(-80),char(0),char(13),char(0),char(-73),char(0),char(13),char(0),char(-72),char(0), char(13),char(0),char(-48),char(0),char(13),char(0),char(-47),char(0),char(13),char(0),char(-46),char(0),char(13),char(0),char(-45),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(0),char(0),char(-39),char(0), -char(0),char(0),char(-38),char(0),char(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0),char(4),char(0),char(-35),char(0),char(0),char(0),char(100),char(0), -char(73),char(0),char(39),char(0),char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(14),char(0),char(-75),char(0), -char(14),char(0),char(-74),char(0),char(14),char(0),char(-64),char(0),char(14),char(0),char(-63),char(0),char(14),char(0),char(-62),char(0),char(14),char(0),char(-61),char(0), -char(14),char(0),char(-60),char(0),char(14),char(0),char(-59),char(0),char(14),char(0),char(-58),char(0),char(14),char(0),char(-57),char(0),char(14),char(0),char(-56),char(0), -char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(0),char(0),char(-53),char(0),char(0),char(0),char(-52),char(0),char(0),char(0),char(-51),char(0), -char(0),char(0),char(-80),char(0),char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(14),char(0),char(-50),char(0),char(14),char(0),char(-49),char(0), -char(14),char(0),char(-48),char(0),char(14),char(0),char(-47),char(0),char(14),char(0),char(-46),char(0),char(14),char(0),char(-45),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(0),char(0),char(-39),char(0), -char(0),char(0),char(-38),char(0),char(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0),char(4),char(0),char(-35),char(0),char(0),char(0),char(100),char(0), -char(74),char(0),char(9),char(0),char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(7),char(0),char(-75),char(0), -char(7),char(0),char(-74),char(0),char(7),char(0),char(-73),char(0),char(7),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0), -char(75),char(0),char(9),char(0),char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(8),char(0),char(-75),char(0), -char(8),char(0),char(-74),char(0),char(8),char(0),char(-73),char(0),char(8),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0), -char(76),char(0),char(5),char(0),char(56),char(0),char(-95),char(0),char(13),char(0),char(-34),char(0),char(13),char(0),char(-33),char(0),char(7),char(0),char(-32),char(0), -char(0),char(0),char(37),char(0),char(77),char(0),char(4),char(0),char(59),char(0),char(-95),char(0),char(14),char(0),char(-34),char(0),char(14),char(0),char(-33),char(0), -char(8),char(0),char(-32),char(0),char(50),char(0),char(22),char(0),char(8),char(0),char(-31),char(0),char(8),char(0),char(-76),char(0),char(8),char(0),char(111),char(0), -char(8),char(0),char(-30),char(0),char(8),char(0),char(113),char(0),char(8),char(0),char(-29),char(0),char(8),char(0),char(-28),char(0),char(8),char(0),char(-27),char(0), -char(8),char(0),char(-26),char(0),char(8),char(0),char(-25),char(0),char(8),char(0),char(-24),char(0),char(8),char(0),char(-23),char(0),char(8),char(0),char(-22),char(0), -char(8),char(0),char(-21),char(0),char(8),char(0),char(-20),char(0),char(8),char(0),char(-19),char(0),char(4),char(0),char(-18),char(0),char(4),char(0),char(-17),char(0), -char(4),char(0),char(-16),char(0),char(4),char(0),char(-15),char(0),char(4),char(0),char(-14),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0), -char(7),char(0),char(-31),char(0),char(7),char(0),char(-76),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(-30),char(0),char(7),char(0),char(113),char(0), -char(7),char(0),char(-29),char(0),char(7),char(0),char(-28),char(0),char(7),char(0),char(-27),char(0),char(7),char(0),char(-26),char(0),char(7),char(0),char(-25),char(0), -char(7),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0),char(7),char(0),char(-20),char(0), -char(7),char(0),char(-19),char(0),char(4),char(0),char(-18),char(0),char(4),char(0),char(-17),char(0),char(4),char(0),char(-16),char(0),char(4),char(0),char(-15),char(0), -char(4),char(0),char(-14),char(0),char(0),char(0),char(37),char(0),char(78),char(0),char(4),char(0),char(7),char(0),char(-13),char(0),char(7),char(0),char(-12),char(0), -char(7),char(0),char(-11),char(0),char(4),char(0),char(79),char(0),char(79),char(0),char(10),char(0),char(78),char(0),char(-10),char(0),char(13),char(0),char(-9),char(0), -char(13),char(0),char(-8),char(0),char(13),char(0),char(-7),char(0),char(13),char(0),char(-6),char(0),char(13),char(0),char(-5),char(0),char(7),char(0),char(-120),char(0), -char(7),char(0),char(-4),char(0),char(4),char(0),char(-3),char(0),char(4),char(0),char(53),char(0),char(80),char(0),char(4),char(0),char(78),char(0),char(-10),char(0), -char(4),char(0),char(-2),char(0),char(7),char(0),char(-1),char(0),char(4),char(0),char(0),char(1),char(81),char(0),char(4),char(0),char(13),char(0),char(-5),char(0), -char(78),char(0),char(-10),char(0),char(4),char(0),char(1),char(1),char(7),char(0),char(2),char(1),char(82),char(0),char(7),char(0),char(13),char(0),char(3),char(1), -char(78),char(0),char(-10),char(0),char(4),char(0),char(4),char(1),char(7),char(0),char(5),char(1),char(7),char(0),char(6),char(1),char(7),char(0),char(7),char(1), -char(4),char(0),char(53),char(0),char(83),char(0),char(6),char(0),char(15),char(0),char(8),char(1),char(13),char(0),char(6),char(1),char(13),char(0),char(9),char(1), -char(58),char(0),char(10),char(1),char(4),char(0),char(11),char(1),char(7),char(0),char(7),char(1),char(84),char(0),char(26),char(0),char(4),char(0),char(12),char(1), -char(7),char(0),char(13),char(1),char(7),char(0),char(-76),char(0),char(7),char(0),char(14),char(1),char(7),char(0),char(15),char(1),char(7),char(0),char(16),char(1), -char(7),char(0),char(17),char(1),char(7),char(0),char(18),char(1),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(4),char(0),char(32),char(1),char(4),char(0),char(33),char(1),char(4),char(0),char(34),char(1),char(4),char(0),char(35),char(1),char(4),char(0),char(118),char(0), -char(85),char(0),char(12),char(0),char(15),char(0),char(36),char(1),char(15),char(0),char(37),char(1),char(15),char(0),char(38),char(1),char(13),char(0),char(39),char(1), -char(13),char(0),char(40),char(1),char(7),char(0),char(41),char(1),char(4),char(0),char(42),char(1),char(4),char(0),char(43),char(1),char(4),char(0),char(44),char(1), -char(4),char(0),char(45),char(1),char(7),char(0),char(5),char(1),char(4),char(0),char(53),char(0),char(86),char(0),char(27),char(0),char(17),char(0),char(46),char(1), -char(15),char(0),char(47),char(1),char(15),char(0),char(48),char(1),char(13),char(0),char(39),char(1),char(13),char(0),char(49),char(1),char(13),char(0),char(50),char(1), -char(13),char(0),char(51),char(1),char(13),char(0),char(52),char(1),char(13),char(0),char(53),char(1),char(4),char(0),char(54),char(1),char(7),char(0),char(55),char(1), -char(4),char(0),char(56),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(58),char(1),char(7),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(7),char(0),char(63),char(1),char(7),char(0),char(64),char(1),char(7),char(0),char(65),char(1), -char(7),char(0),char(66),char(1),char(7),char(0),char(67),char(1),char(7),char(0),char(68),char(1),char(4),char(0),char(69),char(1),char(4),char(0),char(70),char(1), -char(4),char(0),char(71),char(1),char(87),char(0),char(12),char(0),char(9),char(0),char(72),char(1),char(9),char(0),char(73),char(1),char(13),char(0),char(74),char(1), -char(7),char(0),char(75),char(1),char(7),char(0),char(-27),char(0),char(7),char(0),char(76),char(1),char(4),char(0),char(77),char(1),char(13),char(0),char(78),char(1), -char(4),char(0),char(79),char(1),char(4),char(0),char(80),char(1),char(4),char(0),char(81),char(1),char(4),char(0),char(53),char(0),char(88),char(0),char(19),char(0), -char(48),char(0),char(126),char(0),char(85),char(0),char(82),char(1),char(78),char(0),char(83),char(1),char(79),char(0),char(84),char(1),char(80),char(0),char(85),char(1), -char(81),char(0),char(86),char(1),char(82),char(0),char(87),char(1),char(83),char(0),char(88),char(1),char(86),char(0),char(89),char(1),char(87),char(0),char(90),char(1), -char(4),char(0),char(91),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(92),char(1),char(4),char(0),char(93),char(1),char(4),char(0),char(94),char(1), -char(4),char(0),char(95),char(1),char(4),char(0),char(96),char(1),char(4),char(0),char(97),char(1),char(84),char(0),char(98),char(1),}; +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(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0),char(0),char(0),char(-35),char(0),char(0),char(0),char(-34),char(0), +char(0),char(0),char(-33),char(0),char(4),char(0),char(-32),char(0),char(73),char(0),char(41),char(0),char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0), +char(18),char(0),char(-91),char(0),char(14),char(0),char(-75),char(0),char(14),char(0),char(-74),char(0),char(14),char(0),char(-64),char(0),char(14),char(0),char(-63),char(0), +char(14),char(0),char(-62),char(0),char(14),char(0),char(-61),char(0),char(14),char(0),char(-60),char(0),char(14),char(0),char(-59),char(0),char(14),char(0),char(-58),char(0), +char(14),char(0),char(-57),char(0),char(14),char(0),char(-56),char(0),char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(0),char(0),char(-53),char(0), +char(0),char(0),char(-52),char(0),char(0),char(0),char(-51),char(0),char(0),char(0),char(-50),char(0),char(0),char(0),char(-49),char(0),char(0),char(0),char(-80),char(0), +char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(14),char(0),char(-48),char(0),char(14),char(0),char(-47),char(0),char(14),char(0),char(-46),char(0), +char(14),char(0),char(-45),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(0),char(0),char(-37),char(0),char(0),char(0),char(-36),char(0), +char(0),char(0),char(-35),char(0),char(0),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(4),char(0),char(-32),char(0),char(74),char(0),char(9),char(0), +char(57),char(0),char(-95),char(0),char(17),char(0),char(-92),char(0),char(17),char(0),char(-91),char(0),char(7),char(0),char(-75),char(0),char(7),char(0),char(-74),char(0), +char(7),char(0),char(-73),char(0),char(7),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0),char(75),char(0),char(9),char(0), +char(59),char(0),char(-95),char(0),char(18),char(0),char(-92),char(0),char(18),char(0),char(-91),char(0),char(8),char(0),char(-75),char(0),char(8),char(0),char(-74),char(0), +char(8),char(0),char(-73),char(0),char(8),char(0),char(-72),char(0),char(4),char(0),char(-71),char(0),char(4),char(0),char(-70),char(0),char(76),char(0),char(5),char(0), +char(56),char(0),char(-95),char(0),char(13),char(0),char(-31),char(0),char(13),char(0),char(-30),char(0),char(7),char(0),char(-29),char(0),char(0),char(0),char(37),char(0), +char(77),char(0),char(4),char(0),char(59),char(0),char(-95),char(0),char(14),char(0),char(-31),char(0),char(14),char(0),char(-30),char(0),char(8),char(0),char(-29),char(0), +char(50),char(0),char(22),char(0),char(8),char(0),char(-28),char(0),char(8),char(0),char(-76),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(-27),char(0), +char(8),char(0),char(113),char(0),char(8),char(0),char(-26),char(0),char(8),char(0),char(-25),char(0),char(8),char(0),char(-24),char(0),char(8),char(0),char(-23),char(0), +char(8),char(0),char(-22),char(0),char(8),char(0),char(-21),char(0),char(8),char(0),char(-20),char(0),char(8),char(0),char(-19),char(0),char(8),char(0),char(-18),char(0), +char(8),char(0),char(-17),char(0),char(8),char(0),char(-16),char(0),char(4),char(0),char(-15),char(0),char(4),char(0),char(-14),char(0),char(4),char(0),char(-13),char(0), +char(4),char(0),char(-12),char(0),char(4),char(0),char(-11),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0),char(7),char(0),char(-28),char(0), +char(7),char(0),char(-76),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(-27),char(0),char(7),char(0),char(113),char(0),char(7),char(0),char(-26),char(0), +char(7),char(0),char(-25),char(0),char(7),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0), +char(7),char(0),char(-20),char(0),char(7),char(0),char(-19),char(0),char(7),char(0),char(-18),char(0),char(7),char(0),char(-17),char(0),char(7),char(0),char(-16),char(0), +char(4),char(0),char(-15),char(0),char(4),char(0),char(-14),char(0),char(4),char(0),char(-13),char(0),char(4),char(0),char(-12),char(0),char(4),char(0),char(-11),char(0), +char(0),char(0),char(37),char(0),char(78),char(0),char(4),char(0),char(7),char(0),char(-10),char(0),char(7),char(0),char(-9),char(0),char(7),char(0),char(-8),char(0), +char(4),char(0),char(79),char(0),char(79),char(0),char(10),char(0),char(78),char(0),char(-7),char(0),char(13),char(0),char(-6),char(0),char(13),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(7),char(0),char(-120),char(0),char(7),char(0),char(-1),char(0), +char(4),char(0),char(0),char(1),char(4),char(0),char(53),char(0),char(80),char(0),char(4),char(0),char(78),char(0),char(-7),char(0),char(4),char(0),char(1),char(1), +char(7),char(0),char(2),char(1),char(4),char(0),char(3),char(1),char(81),char(0),char(4),char(0),char(13),char(0),char(-2),char(0),char(78),char(0),char(-7),char(0), +char(4),char(0),char(4),char(1),char(7),char(0),char(5),char(1),char(82),char(0),char(7),char(0),char(13),char(0),char(6),char(1),char(78),char(0),char(-7),char(0), +char(4),char(0),char(7),char(1),char(7),char(0),char(8),char(1),char(7),char(0),char(9),char(1),char(7),char(0),char(10),char(1),char(4),char(0),char(53),char(0), +char(83),char(0),char(6),char(0),char(15),char(0),char(11),char(1),char(13),char(0),char(9),char(1),char(13),char(0),char(12),char(1),char(58),char(0),char(13),char(1), +char(4),char(0),char(14),char(1),char(7),char(0),char(10),char(1),char(84),char(0),char(26),char(0),char(4),char(0),char(15),char(1),char(7),char(0),char(16),char(1), +char(7),char(0),char(-76),char(0),char(7),char(0),char(17),char(1),char(7),char(0),char(18),char(1),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(4),char(0),char(35),char(1), +char(4),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(118),char(0),char(85),char(0),char(12),char(0), +char(15),char(0),char(39),char(1),char(15),char(0),char(40),char(1),char(15),char(0),char(41),char(1),char(13),char(0),char(42),char(1),char(13),char(0),char(43),char(1), +char(7),char(0),char(44),char(1),char(4),char(0),char(45),char(1),char(4),char(0),char(46),char(1),char(4),char(0),char(47),char(1),char(4),char(0),char(48),char(1), +char(7),char(0),char(8),char(1),char(4),char(0),char(53),char(0),char(86),char(0),char(27),char(0),char(17),char(0),char(49),char(1),char(15),char(0),char(50),char(1), +char(15),char(0),char(51),char(1),char(13),char(0),char(42),char(1),char(13),char(0),char(52),char(1),char(13),char(0),char(53),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(4),char(0),char(57),char(1),char(7),char(0),char(58),char(1),char(4),char(0),char(59),char(1), +char(4),char(0),char(60),char(1),char(4),char(0),char(61),char(1),char(7),char(0),char(62),char(1),char(7),char(0),char(63),char(1),char(4),char(0),char(64),char(1), +char(4),char(0),char(65),char(1),char(7),char(0),char(66),char(1),char(7),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(4),char(0),char(72),char(1),char(4),char(0),char(73),char(1),char(4),char(0),char(74),char(1), +char(87),char(0),char(12),char(0),char(9),char(0),char(75),char(1),char(9),char(0),char(76),char(1),char(13),char(0),char(77),char(1),char(7),char(0),char(78),char(1), +char(7),char(0),char(-24),char(0),char(7),char(0),char(79),char(1),char(4),char(0),char(80),char(1),char(13),char(0),char(81),char(1),char(4),char(0),char(82),char(1), +char(4),char(0),char(83),char(1),char(4),char(0),char(84),char(1),char(4),char(0),char(53),char(0),char(88),char(0),char(19),char(0),char(48),char(0),char(126),char(0), +char(85),char(0),char(85),char(1),char(78),char(0),char(86),char(1),char(79),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(86),char(0),char(92),char(1),char(87),char(0),char(93),char(1),char(4),char(0),char(94),char(1), +char(4),char(0),char(60),char(1),char(4),char(0),char(95),char(1),char(4),char(0),char(96),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(84),char(0),char(101),char(1),}; int sBulletDNAlen64= sizeof(sBulletDNAstr64);